Statistiques
| Branche: | Révision :

xlcloud / papers / 2014 / reservation / IEEEtran.bst @ 848e7701

Historique | Voir | Annoter | Télécharger (57,83 ko)

1 6862e602 Marcos Assuncao
%%
2 6862e602 Marcos Assuncao
%% IEEEtran.bst
3 6862e602 Marcos Assuncao
%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted)
4 6862e602 Marcos Assuncao
%% Version 1.12 (2007/01/11)
5 6862e602 Marcos Assuncao
%% 
6 6862e602 Marcos Assuncao
%% Copyright (c) 2003-2007 Michael Shell
7 6862e602 Marcos Assuncao
%% 
8 6862e602 Marcos Assuncao
%% Original starting code base and algorithms obtained from the output of
9 6862e602 Marcos Assuncao
%% Patrick W. Daly's makebst package as well as from prior versions of
10 6862e602 Marcos Assuncao
%% IEEE BibTeX styles:
11 6862e602 Marcos Assuncao
%% 
12 6862e602 Marcos Assuncao
%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst  (1985/1988)
13 6862e602 Marcos Assuncao
%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
14 6862e602 Marcos Assuncao
%% 
15 6862e602 Marcos Assuncao
%% Support sites:
16 6862e602 Marcos Assuncao
%% http://www.michaelshell.org/tex/ieeetran/
17 6862e602 Marcos Assuncao
%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
18 6862e602 Marcos Assuncao
%% and/or
19 6862e602 Marcos Assuncao
%% http://www.ieee.org/
20 6862e602 Marcos Assuncao
%% 
21 6862e602 Marcos Assuncao
%% For use with BibTeX version 0.99a or later
22 6862e602 Marcos Assuncao
%%
23 6862e602 Marcos Assuncao
%% This is a numerical citation style.
24 6862e602 Marcos Assuncao
%% 
25 6862e602 Marcos Assuncao
%%*************************************************************************
26 6862e602 Marcos Assuncao
%% Legal Notice:
27 6862e602 Marcos Assuncao
%% This code is offered as-is without any warranty either expressed or
28 6862e602 Marcos Assuncao
%% implied; without even the implied warranty of MERCHANTABILITY or
29 6862e602 Marcos Assuncao
%% FITNESS FOR A PARTICULAR PURPOSE! 
30 6862e602 Marcos Assuncao
%% User assumes all risk.
31 6862e602 Marcos Assuncao
%% In no event shall IEEE or any contributor to this code be liable for
32 6862e602 Marcos Assuncao
%% any damages or losses, including, but not limited to, incidental,
33 6862e602 Marcos Assuncao
%% consequential, or any other damages, resulting from the use or misuse
34 6862e602 Marcos Assuncao
%% of any information contained here.
35 6862e602 Marcos Assuncao
%%
36 6862e602 Marcos Assuncao
%% All comments are the opinions of their respective authors and are not
37 6862e602 Marcos Assuncao
%% necessarily endorsed by the IEEE.
38 6862e602 Marcos Assuncao
%%
39 6862e602 Marcos Assuncao
%% This work is distributed under the LaTeX Project Public License (LPPL)
40 6862e602 Marcos Assuncao
%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
41 6862e602 Marcos Assuncao
%% distributed and modified. A copy of the LPPL, version 1.3, is included
42 6862e602 Marcos Assuncao
%% in the base LaTeX documentation of all distributions of LaTeX released
43 6862e602 Marcos Assuncao
%% 2003/12/01 or later.
44 6862e602 Marcos Assuncao
%% Retain all contribution notices and credits.
45 6862e602 Marcos Assuncao
%% ** Modified files should be clearly indicated as such, including  **
46 6862e602 Marcos Assuncao
%% ** renaming them and changing author support contact information. **
47 6862e602 Marcos Assuncao
%%
48 6862e602 Marcos Assuncao
%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
49 6862e602 Marcos Assuncao
%%                    IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
50 6862e602 Marcos Assuncao
%%                    IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
51 6862e602 Marcos Assuncao
%%*************************************************************************
52 6862e602 Marcos Assuncao
%
53 6862e602 Marcos Assuncao
%
54 6862e602 Marcos Assuncao
% Changelog:
55 6862e602 Marcos Assuncao
%
56 6862e602 Marcos Assuncao
% 1.00 (2002/08/13) Initial release
57 6862e602 Marcos Assuncao
%
58 6862e602 Marcos Assuncao
% 1.10 (2002/09/27)
59 6862e602 Marcos Assuncao
%  1. Corrected minor bug for improperly formed warning message when a
60 6862e602 Marcos Assuncao
%     book was not given a title. Thanks to Ming Kin Lai for reporting this.
61 6862e602 Marcos Assuncao
%  2. Added support for CTLname_format_string and CTLname_latex_cmd fields
62 6862e602 Marcos Assuncao
%     in the BST control entry type.
63 6862e602 Marcos Assuncao
%
64 6862e602 Marcos Assuncao
% 1.11 (2003/04/02)
65 6862e602 Marcos Assuncao
%  1. Fixed bug with URLs containing underscores when using url.sty. Thanks
66 6862e602 Marcos Assuncao
%     to Ming Kin Lai for reporting this.
67 6862e602 Marcos Assuncao
%
68 6862e602 Marcos Assuncao
% 1.12 (2007/01/11)
69 6862e602 Marcos Assuncao
%  1. Fixed bug with unwanted comma before "et al." when an entry contained
70 6862e602 Marcos Assuncao
%     more than two author names. Thanks to Pallav Gupta for reporting this.
71 6862e602 Marcos Assuncao
%  2. Fixed bug with anomalous closing quote in tech reports that have a
72 6862e602 Marcos Assuncao
%     type, but without a number or address. Thanks to Mehrdad Mirreza for
73 6862e602 Marcos Assuncao
%     reporting this.
74 6862e602 Marcos Assuncao
%  3. Use braces in \providecommand in begin.bib to better support
75 6862e602 Marcos Assuncao
%     latex2html. TeX style length assignments OK with recent versions
76 6862e602 Marcos Assuncao
%     of latex2html - 1.71 (2002/2/1) or later is strongly recommended.
77 6862e602 Marcos Assuncao
%     Use of the language field still causes trouble with latex2html.
78 6862e602 Marcos Assuncao
%     Thanks to Federico Beffa for reporting this.
79 6862e602 Marcos Assuncao
%  4. Added IEEEtran.bst ID and version comment string to .bbl output.
80 6862e602 Marcos Assuncao
%  5. Provide a \BIBdecl hook that allows the user to execute commands
81 6862e602 Marcos Assuncao
%     just prior to the first entry.
82 6862e602 Marcos Assuncao
%  6. Use default urlstyle (is using url.sty) of "same" rather than rm to
83 6862e602 Marcos Assuncao
%     better work with a wider variety of bibliography styles.
84 6862e602 Marcos Assuncao
%  7. Changed month abbreviations from Sept., July and June to Sep., Jul.,
85 6862e602 Marcos Assuncao
%     and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann
86 6862e602 Marcos Assuncao
%     for reporting this.
87 6862e602 Marcos Assuncao
%  8. Control entry types should not be considered when calculating longest
88 6862e602 Marcos Assuncao
%     label width.
89 6862e602 Marcos Assuncao
%  9. Added alias www for electronic/online.
90 6862e602 Marcos Assuncao
% 10. Added CTLname_url_prefix control entry type.
91 6862e602 Marcos Assuncao
92 6862e602 Marcos Assuncao
93 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
94 6862e602 Marcos Assuncao
%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
95 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
96 6862e602 Marcos Assuncao
97 6862e602 Marcos Assuncao
% These are the defaults for the user adjustable controls. The values used
98 6862e602 Marcos Assuncao
% here can be overridden by the user via IEEEtranBSTCTL entry type.
99 6862e602 Marcos Assuncao
100 6862e602 Marcos Assuncao
% NOTE: The recommended LaTeX command to invoke a control entry type is:
101 6862e602 Marcos Assuncao
% 
102 6862e602 Marcos Assuncao
%\makeatletter
103 6862e602 Marcos Assuncao
%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
104 6862e602 Marcos Assuncao
%\def\@bstctlcite[#1]#2{\@bsphack
105 6862e602 Marcos Assuncao
%  \@for\@citeb:=#2\do{%
106 6862e602 Marcos Assuncao
%    \edef\@citeb{\expandafter\@firstofone\@citeb}%
107 6862e602 Marcos Assuncao
%    \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
108 6862e602 Marcos Assuncao
%  \@esphack}
109 6862e602 Marcos Assuncao
%\makeatother
110 6862e602 Marcos Assuncao
%
111 6862e602 Marcos Assuncao
% It is called at the start of the document, before the first \cite, like:
112 6862e602 Marcos Assuncao
% \bstctlcite{IEEEexample:BSTcontrol}
113 6862e602 Marcos Assuncao
%
114 6862e602 Marcos Assuncao
% IEEEtran.cls V1.6 and later does provide this command.
115 6862e602 Marcos Assuncao
116 6862e602 Marcos Assuncao
117 6862e602 Marcos Assuncao
118 6862e602 Marcos Assuncao
% #0 turns off the display of the number for articles.
119 6862e602 Marcos Assuncao
% #1 enables
120 6862e602 Marcos Assuncao
FUNCTION {default.is.use.number.for.article} { #1 }
121 6862e602 Marcos Assuncao
122 6862e602 Marcos Assuncao
123 6862e602 Marcos Assuncao
% #0 turns off the display of the paper and type fields in @inproceedings.
124 6862e602 Marcos Assuncao
% #1 enables
125 6862e602 Marcos Assuncao
FUNCTION {default.is.use.paper} { #1 }
126 6862e602 Marcos Assuncao
127 6862e602 Marcos Assuncao
128 6862e602 Marcos Assuncao
% #0 turns off the forced use of "et al."
129 6862e602 Marcos Assuncao
% #1 enables
130 6862e602 Marcos Assuncao
FUNCTION {default.is.forced.et.al} { #0 }
131 6862e602 Marcos Assuncao
132 6862e602 Marcos Assuncao
% The maximum number of names that can be present beyond which an "et al."
133 6862e602 Marcos Assuncao
% usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
134 6862e602 Marcos Assuncao
% is not greater than this value!
135 6862e602 Marcos Assuncao
% Note: There are many instances of references in IEEE journals which have
136 6862e602 Marcos Assuncao
% a very large number of authors as well as instances in which "et al." is
137 6862e602 Marcos Assuncao
% used profusely.
138 6862e602 Marcos Assuncao
FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
139 6862e602 Marcos Assuncao
140 6862e602 Marcos Assuncao
% The number of names that will be shown with a forced "et al.".
141 6862e602 Marcos Assuncao
% Must be less than or equal to max.num.names.before.forced.et.al
142 6862e602 Marcos Assuncao
FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
143 6862e602 Marcos Assuncao
144 6862e602 Marcos Assuncao
145 6862e602 Marcos Assuncao
% #0 turns off the alternate interword spacing for entries with URLs.
146 6862e602 Marcos Assuncao
% #1 enables
147 6862e602 Marcos Assuncao
FUNCTION {default.is.use.alt.interword.spacing} { #1 }
148 6862e602 Marcos Assuncao
149 6862e602 Marcos Assuncao
% If alternate interword spacing for entries with URLs is enabled, this is
150 6862e602 Marcos Assuncao
% the interword spacing stretch factor that will be used. For example, the
151 6862e602 Marcos Assuncao
% default "4" here means that the interword spacing in entries with URLs can
152 6862e602 Marcos Assuncao
% stretch to four times normal. Does not have to be an integer. Note that
153 6862e602 Marcos Assuncao
% the value specified here can be overridden by the user in their LaTeX
154 6862e602 Marcos Assuncao
% code via a command such as: 
155 6862e602 Marcos Assuncao
% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
156 6862e602 Marcos Assuncao
% that via the IEEEtranBSTCTL entry type.
157 6862e602 Marcos Assuncao
FUNCTION {default.ALTinterwordstretchfactor} { "4" }
158 6862e602 Marcos Assuncao
159 6862e602 Marcos Assuncao
160 6862e602 Marcos Assuncao
% #0 turns off the "dashification" of repeated (i.e., identical to those
161 6862e602 Marcos Assuncao
% of the previous entry) names. IEEE normally does this.
162 6862e602 Marcos Assuncao
% #1 enables
163 6862e602 Marcos Assuncao
FUNCTION {default.is.dash.repeated.names} { #1 }
164 6862e602 Marcos Assuncao
165 6862e602 Marcos Assuncao
166 6862e602 Marcos Assuncao
% The default name format control string.
167 6862e602 Marcos Assuncao
FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
168 6862e602 Marcos Assuncao
169 6862e602 Marcos Assuncao
170 6862e602 Marcos Assuncao
% The default LaTeX font command for the names.
171 6862e602 Marcos Assuncao
FUNCTION {default.name.latex.cmd}{ "" }
172 6862e602 Marcos Assuncao
173 6862e602 Marcos Assuncao
174 6862e602 Marcos Assuncao
% The default URL prefix.
175 6862e602 Marcos Assuncao
FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
176 6862e602 Marcos Assuncao
177 6862e602 Marcos Assuncao
178 6862e602 Marcos Assuncao
% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
179 6862e602 Marcos Assuncao
180 6862e602 Marcos Assuncao
% #0 turns off the terminal startup banner/completed message so as to
181 6862e602 Marcos Assuncao
% operate more quietly.
182 6862e602 Marcos Assuncao
% #1 enables
183 6862e602 Marcos Assuncao
FUNCTION {is.print.banners.to.terminal} { #1 }
184 6862e602 Marcos Assuncao
185 6862e602 Marcos Assuncao
186 6862e602 Marcos Assuncao
187 6862e602 Marcos Assuncao
188 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
189 6862e602 Marcos Assuncao
%% FILE VERSION AND BANNER %%
190 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
191 6862e602 Marcos Assuncao
192 6862e602 Marcos Assuncao
FUNCTION{bst.file.version} { "1.12" }
193 6862e602 Marcos Assuncao
FUNCTION{bst.file.date} { "2007/01/11" }
194 6862e602 Marcos Assuncao
FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
195 6862e602 Marcos Assuncao
196 6862e602 Marcos Assuncao
FUNCTION {banner.message}
197 6862e602 Marcos Assuncao
{ is.print.banners.to.terminal
198 6862e602 Marcos Assuncao
     { "-- IEEEtran.bst version" " " * bst.file.version *
199 6862e602 Marcos Assuncao
       " (" * bst.file.date * ") " * "by Michael Shell." *
200 6862e602 Marcos Assuncao
       top$
201 6862e602 Marcos Assuncao
       "-- " bst.file.website *
202 6862e602 Marcos Assuncao
       top$
203 6862e602 Marcos Assuncao
       "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
204 6862e602 Marcos Assuncao
       top$
205 6862e602 Marcos Assuncao
     }
206 6862e602 Marcos Assuncao
     { skip$ }
207 6862e602 Marcos Assuncao
   if$
208 6862e602 Marcos Assuncao
}
209 6862e602 Marcos Assuncao
210 6862e602 Marcos Assuncao
FUNCTION {completed.message}
211 6862e602 Marcos Assuncao
{ is.print.banners.to.terminal
212 6862e602 Marcos Assuncao
     { ""
213 6862e602 Marcos Assuncao
       top$
214 6862e602 Marcos Assuncao
       "Done."
215 6862e602 Marcos Assuncao
       top$
216 6862e602 Marcos Assuncao
     }
217 6862e602 Marcos Assuncao
     { skip$ }
218 6862e602 Marcos Assuncao
   if$
219 6862e602 Marcos Assuncao
}
220 6862e602 Marcos Assuncao
221 6862e602 Marcos Assuncao
222 6862e602 Marcos Assuncao
223 6862e602 Marcos Assuncao
224 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%
225 6862e602 Marcos Assuncao
%% STRING CONSTANTS %%
226 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%
227 6862e602 Marcos Assuncao
228 6862e602 Marcos Assuncao
FUNCTION {bbl.and}{ "and" }
229 6862e602 Marcos Assuncao
FUNCTION {bbl.etal}{ "et~al." }
230 6862e602 Marcos Assuncao
FUNCTION {bbl.editors}{ "eds." }
231 6862e602 Marcos Assuncao
FUNCTION {bbl.editor}{ "ed." }
232 6862e602 Marcos Assuncao
FUNCTION {bbl.edition}{ "ed." }
233 6862e602 Marcos Assuncao
FUNCTION {bbl.volume}{ "vol." }
234 6862e602 Marcos Assuncao
FUNCTION {bbl.of}{ "of" }
235 6862e602 Marcos Assuncao
FUNCTION {bbl.number}{ "no." }
236 6862e602 Marcos Assuncao
FUNCTION {bbl.in}{ "in" }
237 6862e602 Marcos Assuncao
FUNCTION {bbl.pages}{ "pp." }
238 6862e602 Marcos Assuncao
FUNCTION {bbl.page}{ "p." }
239 6862e602 Marcos Assuncao
FUNCTION {bbl.chapter}{ "ch." }
240 6862e602 Marcos Assuncao
FUNCTION {bbl.paper}{ "paper" }
241 6862e602 Marcos Assuncao
FUNCTION {bbl.part}{ "pt." }
242 6862e602 Marcos Assuncao
FUNCTION {bbl.patent}{ "Patent" }
243 6862e602 Marcos Assuncao
FUNCTION {bbl.patentUS}{ "U.S." }
244 6862e602 Marcos Assuncao
FUNCTION {bbl.revision}{ "Rev." }
245 6862e602 Marcos Assuncao
FUNCTION {bbl.series}{ "ser." }
246 6862e602 Marcos Assuncao
FUNCTION {bbl.standard}{ "Std." }
247 6862e602 Marcos Assuncao
FUNCTION {bbl.techrep}{ "Tech. Rep." }
248 6862e602 Marcos Assuncao
FUNCTION {bbl.mthesis}{ "Master's thesis" }
249 6862e602 Marcos Assuncao
FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
250 6862e602 Marcos Assuncao
FUNCTION {bbl.st}{ "st" }
251 6862e602 Marcos Assuncao
FUNCTION {bbl.nd}{ "nd" }
252 6862e602 Marcos Assuncao
FUNCTION {bbl.rd}{ "rd" }
253 6862e602 Marcos Assuncao
FUNCTION {bbl.th}{ "th" }
254 6862e602 Marcos Assuncao
255 6862e602 Marcos Assuncao
256 6862e602 Marcos Assuncao
% This is the LaTeX spacer that is used when a larger than normal space
257 6862e602 Marcos Assuncao
% is called for (such as just before the address:publisher).
258 6862e602 Marcos Assuncao
FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
259 6862e602 Marcos Assuncao
260 6862e602 Marcos Assuncao
% The LaTeX code for dashes that are used to represent repeated names.
261 6862e602 Marcos Assuncao
% Note: Some older IEEE journals used something like
262 6862e602 Marcos Assuncao
% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
263 6862e602 Marcos Assuncao
% the baseline. However, IEEE now uses a thinner, above baseline,
264 6862e602 Marcos Assuncao
% six dash long sequence.
265 6862e602 Marcos Assuncao
FUNCTION {repeated.name.dashes} { "------" }
266 6862e602 Marcos Assuncao
267 6862e602 Marcos Assuncao
268 6862e602 Marcos Assuncao
269 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
270 6862e602 Marcos Assuncao
%% PREDEFINED STRING MACROS %%
271 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
272 6862e602 Marcos Assuncao
273 6862e602 Marcos Assuncao
MACRO {jan} {"Jan."}
274 6862e602 Marcos Assuncao
MACRO {feb} {"Feb."}
275 6862e602 Marcos Assuncao
MACRO {mar} {"Mar."}
276 6862e602 Marcos Assuncao
MACRO {apr} {"Apr."}
277 6862e602 Marcos Assuncao
MACRO {may} {"May"}
278 6862e602 Marcos Assuncao
MACRO {jun} {"Jun."}
279 6862e602 Marcos Assuncao
MACRO {jul} {"Jul."}
280 6862e602 Marcos Assuncao
MACRO {aug} {"Aug."}
281 6862e602 Marcos Assuncao
MACRO {sep} {"Sep."}
282 6862e602 Marcos Assuncao
MACRO {oct} {"Oct."}
283 6862e602 Marcos Assuncao
MACRO {nov} {"Nov."}
284 6862e602 Marcos Assuncao
MACRO {dec} {"Dec."}
285 6862e602 Marcos Assuncao
286 6862e602 Marcos Assuncao
287 6862e602 Marcos Assuncao
288 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%
289 6862e602 Marcos Assuncao
%% ENTRY FIELDS %%
290 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%
291 6862e602 Marcos Assuncao
292 6862e602 Marcos Assuncao
ENTRY
293 6862e602 Marcos Assuncao
  { address
294 6862e602 Marcos Assuncao
    assignee
295 6862e602 Marcos Assuncao
    author
296 6862e602 Marcos Assuncao
    booktitle
297 6862e602 Marcos Assuncao
    chapter
298 6862e602 Marcos Assuncao
    day
299 6862e602 Marcos Assuncao
    dayfiled
300 6862e602 Marcos Assuncao
    edition
301 6862e602 Marcos Assuncao
    editor
302 6862e602 Marcos Assuncao
    howpublished
303 6862e602 Marcos Assuncao
    institution
304 6862e602 Marcos Assuncao
    intype
305 6862e602 Marcos Assuncao
    journal
306 6862e602 Marcos Assuncao
    key
307 6862e602 Marcos Assuncao
    language
308 6862e602 Marcos Assuncao
    month
309 6862e602 Marcos Assuncao
    monthfiled
310 6862e602 Marcos Assuncao
    nationality
311 6862e602 Marcos Assuncao
    note
312 6862e602 Marcos Assuncao
    number
313 6862e602 Marcos Assuncao
    organization
314 6862e602 Marcos Assuncao
    pages
315 6862e602 Marcos Assuncao
    paper
316 6862e602 Marcos Assuncao
    publisher
317 6862e602 Marcos Assuncao
    school
318 6862e602 Marcos Assuncao
    series
319 6862e602 Marcos Assuncao
    revision
320 6862e602 Marcos Assuncao
    title
321 6862e602 Marcos Assuncao
    type
322 6862e602 Marcos Assuncao
    url
323 6862e602 Marcos Assuncao
    volume
324 6862e602 Marcos Assuncao
    year
325 6862e602 Marcos Assuncao
    yearfiled
326 6862e602 Marcos Assuncao
    CTLuse_article_number
327 6862e602 Marcos Assuncao
    CTLuse_paper
328 6862e602 Marcos Assuncao
    CTLuse_forced_etal
329 6862e602 Marcos Assuncao
    CTLmax_names_forced_etal
330 6862e602 Marcos Assuncao
    CTLnames_show_etal
331 6862e602 Marcos Assuncao
    CTLuse_alt_spacing
332 6862e602 Marcos Assuncao
    CTLalt_stretch_factor
333 6862e602 Marcos Assuncao
    CTLdash_repeated_names
334 6862e602 Marcos Assuncao
    CTLname_format_string
335 6862e602 Marcos Assuncao
    CTLname_latex_cmd
336 6862e602 Marcos Assuncao
    CTLname_url_prefix
337 6862e602 Marcos Assuncao
  }
338 6862e602 Marcos Assuncao
  {}
339 6862e602 Marcos Assuncao
  { label }
340 6862e602 Marcos Assuncao
341 6862e602 Marcos Assuncao
342 6862e602 Marcos Assuncao
343 6862e602 Marcos Assuncao
344 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%
345 6862e602 Marcos Assuncao
%% INTEGER VARIABLES %%
346 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%
347 6862e602 Marcos Assuncao
348 6862e602 Marcos Assuncao
INTEGERS { prev.status.punct this.status.punct punct.std
349 6862e602 Marcos Assuncao
           punct.no punct.comma punct.period 
350 6862e602 Marcos Assuncao
           prev.status.space this.status.space space.std
351 6862e602 Marcos Assuncao
           space.no space.normal space.large
352 6862e602 Marcos Assuncao
           prev.status.quote this.status.quote quote.std
353 6862e602 Marcos Assuncao
           quote.no quote.close
354 6862e602 Marcos Assuncao
           prev.status.nline this.status.nline nline.std
355 6862e602 Marcos Assuncao
           nline.no nline.newblock 
356 6862e602 Marcos Assuncao
           status.cap cap.std
357 6862e602 Marcos Assuncao
           cap.no cap.yes}
358 6862e602 Marcos Assuncao
359 6862e602 Marcos Assuncao
INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
360 6862e602 Marcos Assuncao
361 6862e602 Marcos Assuncao
INTEGERS { is.use.number.for.article
362 6862e602 Marcos Assuncao
           is.use.paper
363 6862e602 Marcos Assuncao
           is.forced.et.al
364 6862e602 Marcos Assuncao
           max.num.names.before.forced.et.al
365 6862e602 Marcos Assuncao
           num.names.shown.with.forced.et.al
366 6862e602 Marcos Assuncao
           is.use.alt.interword.spacing
367 6862e602 Marcos Assuncao
           is.dash.repeated.names}
368 6862e602 Marcos Assuncao
369 6862e602 Marcos Assuncao
370 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%
371 6862e602 Marcos Assuncao
%% STRING VARIABLES %%
372 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%
373 6862e602 Marcos Assuncao
374 6862e602 Marcos Assuncao
STRINGS { bibinfo
375 6862e602 Marcos Assuncao
          longest.label
376 6862e602 Marcos Assuncao
          oldname
377 6862e602 Marcos Assuncao
          s
378 6862e602 Marcos Assuncao
          t
379 6862e602 Marcos Assuncao
          ALTinterwordstretchfactor
380 6862e602 Marcos Assuncao
          name.format.string
381 6862e602 Marcos Assuncao
          name.latex.cmd
382 6862e602 Marcos Assuncao
          name.url.prefix}
383 6862e602 Marcos Assuncao
384 6862e602 Marcos Assuncao
385 6862e602 Marcos Assuncao
386 6862e602 Marcos Assuncao
387 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%%
388 6862e602 Marcos Assuncao
%% LOW LEVEL FUNCTIONS %%
389 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%%
390 6862e602 Marcos Assuncao
391 6862e602 Marcos Assuncao
FUNCTION {initialize.controls}
392 6862e602 Marcos Assuncao
{ default.is.use.number.for.article 'is.use.number.for.article :=
393 6862e602 Marcos Assuncao
  default.is.use.paper 'is.use.paper :=
394 6862e602 Marcos Assuncao
  default.is.forced.et.al 'is.forced.et.al :=
395 6862e602 Marcos Assuncao
  default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
396 6862e602 Marcos Assuncao
  default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
397 6862e602 Marcos Assuncao
  default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
398 6862e602 Marcos Assuncao
  default.is.dash.repeated.names 'is.dash.repeated.names :=
399 6862e602 Marcos Assuncao
  default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
400 6862e602 Marcos Assuncao
  default.name.format.string 'name.format.string :=
401 6862e602 Marcos Assuncao
  default.name.latex.cmd 'name.latex.cmd :=
402 6862e602 Marcos Assuncao
  default.name.url.prefix 'name.url.prefix :=
403 6862e602 Marcos Assuncao
}
404 6862e602 Marcos Assuncao
405 6862e602 Marcos Assuncao
406 6862e602 Marcos Assuncao
% This IEEEtran.bst features a very powerful and flexible mechanism for
407 6862e602 Marcos Assuncao
% controlling the capitalization, punctuation, spacing, quotation, and
408 6862e602 Marcos Assuncao
% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
409 6862e602 Marcos Assuncao
% or use the newline/newblock feature, but it has been implemented for
410 6862e602 Marcos Assuncao
% possible future use.) The output states of IEEEtran.bst consist of
411 6862e602 Marcos Assuncao
% multiple independent attributes and, as such, can be thought of as being
412 6862e602 Marcos Assuncao
% vectors, rather than the simple scalar values ("before.all", 
413 6862e602 Marcos Assuncao
% "mid.sentence", etc.) used in most other .bst files.
414 6862e602 Marcos Assuncao
% 
415 6862e602 Marcos Assuncao
% The more flexible and complex design used here was motivated in part by
416 6862e602 Marcos Assuncao
% IEEE's rather unusual bibliography style. For example, IEEE ends the
417 6862e602 Marcos Assuncao
% previous field item with a period and large space prior to the publisher
418 6862e602 Marcos Assuncao
% address; the @electronic entry types use periods as inter-item punctuation
419 6862e602 Marcos Assuncao
% rather than the commas used by the other entry types; and URLs are never
420 6862e602 Marcos Assuncao
% followed by periods even though they are the last item in the entry.
421 6862e602 Marcos Assuncao
% Although it is possible to accommodate these features with the conventional
422 6862e602 Marcos Assuncao
% output state system, the seemingly endless exceptions make for convoluted,
423 6862e602 Marcos Assuncao
% unreliable and difficult to maintain code.
424 6862e602 Marcos Assuncao
%
425 6862e602 Marcos Assuncao
% IEEEtran.bst's output state system can be easily understood via a simple
426 6862e602 Marcos Assuncao
% illustration of two most recently formatted entry fields (on the stack):
427 6862e602 Marcos Assuncao
%
428 6862e602 Marcos Assuncao
%               CURRENT_ITEM
429 6862e602 Marcos Assuncao
%               "PREVIOUS_ITEM
430 6862e602 Marcos Assuncao
%
431 6862e602 Marcos Assuncao
% which, in this example, is to eventually appear in the bibliography as:
432 6862e602 Marcos Assuncao
% 
433 6862e602 Marcos Assuncao
%               "PREVIOUS_ITEM," CURRENT_ITEM
434 6862e602 Marcos Assuncao
%
435 6862e602 Marcos Assuncao
% It is the job of the output routine to take the previous item off of the
436 6862e602 Marcos Assuncao
% stack (while leaving the current item at the top of the stack), apply its
437 6862e602 Marcos Assuncao
% trailing punctuation (including closing quote marks) and spacing, and then
438 6862e602 Marcos Assuncao
% to write the result to BibTeX's output buffer:
439 6862e602 Marcos Assuncao
% 
440 6862e602 Marcos Assuncao
%               "PREVIOUS_ITEM," 
441 6862e602 Marcos Assuncao
% 
442 6862e602 Marcos Assuncao
% Punctuation (and spacing) between items is often determined by both of the
443 6862e602 Marcos Assuncao
% items rather than just the first one. The presence of quotation marks
444 6862e602 Marcos Assuncao
% further complicates the situation because, in standard English, trailing
445 6862e602 Marcos Assuncao
% punctuation marks are supposed to be contained within the quotes.
446 6862e602 Marcos Assuncao
% 
447 6862e602 Marcos Assuncao
% IEEEtran.bst maintains two output state (aka "status") vectors which
448 6862e602 Marcos Assuncao
% correspond to the previous and current (aka "this") items. Each vector
449 6862e602 Marcos Assuncao
% consists of several independent attributes which track punctuation,
450 6862e602 Marcos Assuncao
% spacing, quotation, and newlines. Capitalization status is handled by a
451 6862e602 Marcos Assuncao
% separate scalar because the format routines, not the output routine,
452 6862e602 Marcos Assuncao
% handle capitalization and, therefore, there is no need to maintain the
453 6862e602 Marcos Assuncao
% capitalization attribute for both the "previous" and "this" items.
454 6862e602 Marcos Assuncao
% 
455 6862e602 Marcos Assuncao
% When a format routine adds a new item, it copies the current output status
456 6862e602 Marcos Assuncao
% vector to the previous output status vector and (usually) resets the
457 6862e602 Marcos Assuncao
% current (this) output status vector to a "standard status" vector. Using a
458 6862e602 Marcos Assuncao
% "standard status" vector in this way allows us to redefine what we mean by
459 6862e602 Marcos Assuncao
% "standard status" at the start of each entry handler and reuse the same
460 6862e602 Marcos Assuncao
% format routines under the various inter-item separation schemes. For
461 6862e602 Marcos Assuncao
% example, the standard status vector for the @book entry type may use
462 6862e602 Marcos Assuncao
% commas for item separators, while the @electronic type may use periods,
463 6862e602 Marcos Assuncao
% yet both entry handlers exploit many of the exact same format routines.
464 6862e602 Marcos Assuncao
% 
465 6862e602 Marcos Assuncao
% Because format routines have write access to the output status vector of
466 6862e602 Marcos Assuncao
% the previous item, they can override the punctuation choices of the
467 6862e602 Marcos Assuncao
% previous format routine! Therefore, it becomes trivial to implement rules
468 6862e602 Marcos Assuncao
% such as "Always use a period and a large space before the publisher." By
469 6862e602 Marcos Assuncao
% pushing the generation of the closing quote mark to the output routine, we
470 6862e602 Marcos Assuncao
% avoid all the problems caused by having to close a quote before having all
471 6862e602 Marcos Assuncao
% the information required to determine what the punctuation should be.
472 6862e602 Marcos Assuncao
%
473 6862e602 Marcos Assuncao
% The IEEEtran.bst output state system can easily be expanded if needed.
474 6862e602 Marcos Assuncao
% For instance, it is easy to add a "space.tie" attribute value if the
475 6862e602 Marcos Assuncao
% bibliography rules mandate that two items have to be joined with an
476 6862e602 Marcos Assuncao
% unbreakable space. 
477 6862e602 Marcos Assuncao
478 6862e602 Marcos Assuncao
FUNCTION {initialize.status.constants}
479 6862e602 Marcos Assuncao
{ #0 'punct.no :=
480 6862e602 Marcos Assuncao
  #1 'punct.comma :=
481 6862e602 Marcos Assuncao
  #2 'punct.period :=
482 6862e602 Marcos Assuncao
  #0 'space.no := 
483 6862e602 Marcos Assuncao
  #1 'space.normal :=
484 6862e602 Marcos Assuncao
  #2 'space.large :=
485 6862e602 Marcos Assuncao
  #0 'quote.no :=
486 6862e602 Marcos Assuncao
  #1 'quote.close :=
487 6862e602 Marcos Assuncao
  #0 'cap.no :=
488 6862e602 Marcos Assuncao
  #1 'cap.yes :=
489 6862e602 Marcos Assuncao
  #0 'nline.no :=
490 6862e602 Marcos Assuncao
  #1 'nline.newblock :=
491 6862e602 Marcos Assuncao
}
492 6862e602 Marcos Assuncao
493 6862e602 Marcos Assuncao
FUNCTION {std.status.using.comma}
494 6862e602 Marcos Assuncao
{ punct.comma 'punct.std :=
495 6862e602 Marcos Assuncao
  space.normal 'space.std :=
496 6862e602 Marcos Assuncao
  quote.no 'quote.std :=
497 6862e602 Marcos Assuncao
  nline.no 'nline.std :=
498 6862e602 Marcos Assuncao
  cap.no 'cap.std :=
499 6862e602 Marcos Assuncao
}
500 6862e602 Marcos Assuncao
501 6862e602 Marcos Assuncao
FUNCTION {std.status.using.period}
502 6862e602 Marcos Assuncao
{ punct.period 'punct.std :=
503 6862e602 Marcos Assuncao
  space.normal 'space.std :=
504 6862e602 Marcos Assuncao
  quote.no 'quote.std :=
505 6862e602 Marcos Assuncao
  nline.no 'nline.std :=
506 6862e602 Marcos Assuncao
  cap.yes 'cap.std :=
507 6862e602 Marcos Assuncao
}
508 6862e602 Marcos Assuncao
509 6862e602 Marcos Assuncao
FUNCTION {initialize.prev.this.status}
510 6862e602 Marcos Assuncao
{ punct.no 'prev.status.punct :=
511 6862e602 Marcos Assuncao
  space.no 'prev.status.space :=
512 6862e602 Marcos Assuncao
  quote.no 'prev.status.quote :=
513 6862e602 Marcos Assuncao
  nline.no 'prev.status.nline :=
514 6862e602 Marcos Assuncao
  punct.no 'this.status.punct :=
515 6862e602 Marcos Assuncao
  space.no 'this.status.space :=
516 6862e602 Marcos Assuncao
  quote.no 'this.status.quote :=
517 6862e602 Marcos Assuncao
  nline.no 'this.status.nline :=
518 6862e602 Marcos Assuncao
  cap.yes 'status.cap :=
519 6862e602 Marcos Assuncao
}
520 6862e602 Marcos Assuncao
521 6862e602 Marcos Assuncao
FUNCTION {this.status.std}
522 6862e602 Marcos Assuncao
{ punct.std 'this.status.punct :=
523 6862e602 Marcos Assuncao
  space.std 'this.status.space :=
524 6862e602 Marcos Assuncao
  quote.std 'this.status.quote :=
525 6862e602 Marcos Assuncao
  nline.std 'this.status.nline :=
526 6862e602 Marcos Assuncao
}
527 6862e602 Marcos Assuncao
528 6862e602 Marcos Assuncao
FUNCTION {cap.status.std}{ cap.std 'status.cap := }
529 6862e602 Marcos Assuncao
530 6862e602 Marcos Assuncao
FUNCTION {this.to.prev.status}
531 6862e602 Marcos Assuncao
{ this.status.punct 'prev.status.punct :=
532 6862e602 Marcos Assuncao
  this.status.space 'prev.status.space :=
533 6862e602 Marcos Assuncao
  this.status.quote 'prev.status.quote :=
534 6862e602 Marcos Assuncao
  this.status.nline 'prev.status.nline :=
535 6862e602 Marcos Assuncao
}
536 6862e602 Marcos Assuncao
537 6862e602 Marcos Assuncao
538 6862e602 Marcos Assuncao
FUNCTION {not}
539 6862e602 Marcos Assuncao
{   { #0 }
540 6862e602 Marcos Assuncao
    { #1 }
541 6862e602 Marcos Assuncao
  if$
542 6862e602 Marcos Assuncao
}
543 6862e602 Marcos Assuncao
544 6862e602 Marcos Assuncao
FUNCTION {and}
545 6862e602 Marcos Assuncao
{   { skip$ }
546 6862e602 Marcos Assuncao
    { pop$ #0 }
547 6862e602 Marcos Assuncao
  if$
548 6862e602 Marcos Assuncao
}
549 6862e602 Marcos Assuncao
550 6862e602 Marcos Assuncao
FUNCTION {or}
551 6862e602 Marcos Assuncao
{   { pop$ #1 }
552 6862e602 Marcos Assuncao
    { skip$ }
553 6862e602 Marcos Assuncao
  if$
554 6862e602 Marcos Assuncao
}
555 6862e602 Marcos Assuncao
556 6862e602 Marcos Assuncao
557 6862e602 Marcos Assuncao
% convert the strings "yes" or "no" to #1 or #0 respectively
558 6862e602 Marcos Assuncao
FUNCTION {yes.no.to.int}
559 6862e602 Marcos Assuncao
{ "l" change.case$ duplicate$
560 6862e602 Marcos Assuncao
    "yes" =
561 6862e602 Marcos Assuncao
    { pop$  #1 }
562 6862e602 Marcos Assuncao
    { duplicate$ "no" =
563 6862e602 Marcos Assuncao
        { pop$ #0 }
564 6862e602 Marcos Assuncao
        { "unknown boolean " quote$ * swap$ * quote$ *
565 6862e602 Marcos Assuncao
          " in " * cite$ * warning$
566 6862e602 Marcos Assuncao
          #0
567 6862e602 Marcos Assuncao
        }
568 6862e602 Marcos Assuncao
      if$
569 6862e602 Marcos Assuncao
    }
570 6862e602 Marcos Assuncao
  if$
571 6862e602 Marcos Assuncao
}
572 6862e602 Marcos Assuncao
573 6862e602 Marcos Assuncao
574 6862e602 Marcos Assuncao
% pushes true if the single char string on the stack is in the
575 6862e602 Marcos Assuncao
% range of "0" to "9"
576 6862e602 Marcos Assuncao
FUNCTION {is.num}
577 6862e602 Marcos Assuncao
{ chr.to.int$
578 6862e602 Marcos Assuncao
  duplicate$ "0" chr.to.int$ < not
579 6862e602 Marcos Assuncao
  swap$ "9" chr.to.int$ > not and
580 6862e602 Marcos Assuncao
}
581 6862e602 Marcos Assuncao
582 6862e602 Marcos Assuncao
% multiplies the integer on the stack by a factor of 10
583 6862e602 Marcos Assuncao
FUNCTION {bump.int.mag}
584 6862e602 Marcos Assuncao
{ #0 'multiresult :=
585 6862e602 Marcos Assuncao
    { duplicate$ #0 > }
586 6862e602 Marcos Assuncao
    { #1 -
587 6862e602 Marcos Assuncao
      multiresult #10 +
588 6862e602 Marcos Assuncao
      'multiresult :=
589 6862e602 Marcos Assuncao
    }
590 6862e602 Marcos Assuncao
  while$
591 6862e602 Marcos Assuncao
pop$
592 6862e602 Marcos Assuncao
multiresult
593 6862e602 Marcos Assuncao
}
594 6862e602 Marcos Assuncao
595 6862e602 Marcos Assuncao
% converts a single character string on the stack to an integer
596 6862e602 Marcos Assuncao
FUNCTION {char.to.integer}
597 6862e602 Marcos Assuncao
{ duplicate$ 
598 6862e602 Marcos Assuncao
  is.num
599 6862e602 Marcos Assuncao
    { chr.to.int$ "0" chr.to.int$ - }
600 6862e602 Marcos Assuncao
    {"noninteger character " quote$ * swap$ * quote$ *
601 6862e602 Marcos Assuncao
          " in integer field of " * cite$ * warning$
602 6862e602 Marcos Assuncao
    #0
603 6862e602 Marcos Assuncao
    }
604 6862e602 Marcos Assuncao
  if$
605 6862e602 Marcos Assuncao
}
606 6862e602 Marcos Assuncao
607 6862e602 Marcos Assuncao
% converts a string on the stack to an integer
608 6862e602 Marcos Assuncao
FUNCTION {string.to.integer}
609 6862e602 Marcos Assuncao
{ duplicate$ text.length$ 'namesleft :=
610 6862e602 Marcos Assuncao
  #1 'nameptr :=
611 6862e602 Marcos Assuncao
  #0 'numnames :=
612 6862e602 Marcos Assuncao
    { nameptr namesleft > not }
613 6862e602 Marcos Assuncao
    { duplicate$ nameptr #1 substring$
614 6862e602 Marcos Assuncao
      char.to.integer numnames bump.int.mag +
615 6862e602 Marcos Assuncao
      'numnames :=
616 6862e602 Marcos Assuncao
      nameptr #1 +
617 6862e602 Marcos Assuncao
      'nameptr :=
618 6862e602 Marcos Assuncao
    }
619 6862e602 Marcos Assuncao
  while$
620 6862e602 Marcos Assuncao
pop$
621 6862e602 Marcos Assuncao
numnames
622 6862e602 Marcos Assuncao
}
623 6862e602 Marcos Assuncao
624 6862e602 Marcos Assuncao
625 6862e602 Marcos Assuncao
626 6862e602 Marcos Assuncao
627 6862e602 Marcos Assuncao
% The output routines write out the *next* to the top (previous) item on the
628 6862e602 Marcos Assuncao
% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
629 6862e602 Marcos Assuncao
% the output status for the top two items on the stack, these output
630 6862e602 Marcos Assuncao
% routines have to consider the previous output status (which corresponds to
631 6862e602 Marcos Assuncao
% the item that is being output). Full independent control of punctuation,
632 6862e602 Marcos Assuncao
% closing quote marks, spacing, and newblock is provided.
633 6862e602 Marcos Assuncao
% 
634 6862e602 Marcos Assuncao
% "output.nonnull" does not check for the presence of a previous empty
635 6862e602 Marcos Assuncao
% item.
636 6862e602 Marcos Assuncao
% 
637 6862e602 Marcos Assuncao
% "output" does check for the presence of a previous empty item and will
638 6862e602 Marcos Assuncao
% remove an empty item rather than outputing it.
639 6862e602 Marcos Assuncao
% 
640 6862e602 Marcos Assuncao
% "output.warn" is like "output", but will issue a warning if it detects
641 6862e602 Marcos Assuncao
% an empty item.
642 6862e602 Marcos Assuncao
643 6862e602 Marcos Assuncao
FUNCTION {output.nonnull}
644 6862e602 Marcos Assuncao
{ swap$
645 6862e602 Marcos Assuncao
  prev.status.punct punct.comma =
646 6862e602 Marcos Assuncao
     { "," * }
647 6862e602 Marcos Assuncao
     { skip$ }
648 6862e602 Marcos Assuncao
   if$
649 6862e602 Marcos Assuncao
  prev.status.punct punct.period =
650 6862e602 Marcos Assuncao
     { add.period$ }
651 6862e602 Marcos Assuncao
     { skip$ }
652 6862e602 Marcos Assuncao
   if$ 
653 6862e602 Marcos Assuncao
  prev.status.quote quote.close =
654 6862e602 Marcos Assuncao
     { "''" * }
655 6862e602 Marcos Assuncao
     { skip$ }
656 6862e602 Marcos Assuncao
   if$
657 6862e602 Marcos Assuncao
  prev.status.space space.normal =
658 6862e602 Marcos Assuncao
     { " " * }
659 6862e602 Marcos Assuncao
     { skip$ }
660 6862e602 Marcos Assuncao
   if$
661 6862e602 Marcos Assuncao
  prev.status.space space.large =
662 6862e602 Marcos Assuncao
     { large.space * }
663 6862e602 Marcos Assuncao
     { skip$ }
664 6862e602 Marcos Assuncao
   if$
665 6862e602 Marcos Assuncao
  write$
666 6862e602 Marcos Assuncao
  prev.status.nline nline.newblock =
667 6862e602 Marcos Assuncao
     { newline$ "\newblock " write$ }
668 6862e602 Marcos Assuncao
     { skip$ }
669 6862e602 Marcos Assuncao
   if$
670 6862e602 Marcos Assuncao
}
671 6862e602 Marcos Assuncao
672 6862e602 Marcos Assuncao
FUNCTION {output}
673 6862e602 Marcos Assuncao
{ duplicate$ empty$
674 6862e602 Marcos Assuncao
    'pop$
675 6862e602 Marcos Assuncao
    'output.nonnull
676 6862e602 Marcos Assuncao
  if$
677 6862e602 Marcos Assuncao
}
678 6862e602 Marcos Assuncao
679 6862e602 Marcos Assuncao
FUNCTION {output.warn}
680 6862e602 Marcos Assuncao
{ 't :=
681 6862e602 Marcos Assuncao
  duplicate$ empty$
682 6862e602 Marcos Assuncao
    { pop$ "empty " t * " in " * cite$ * warning$ }
683 6862e602 Marcos Assuncao
    'output.nonnull
684 6862e602 Marcos Assuncao
  if$
685 6862e602 Marcos Assuncao
}
686 6862e602 Marcos Assuncao
687 6862e602 Marcos Assuncao
% "fin.entry" is the output routine that handles the last item of the entry
688 6862e602 Marcos Assuncao
% (which will be on the top of the stack when "fin.entry" is called).
689 6862e602 Marcos Assuncao
690 6862e602 Marcos Assuncao
FUNCTION {fin.entry}
691 6862e602 Marcos Assuncao
{ this.status.punct punct.no =
692 6862e602 Marcos Assuncao
     { skip$ }
693 6862e602 Marcos Assuncao
     { add.period$ }
694 6862e602 Marcos Assuncao
   if$
695 6862e602 Marcos Assuncao
   this.status.quote quote.close =
696 6862e602 Marcos Assuncao
     { "''" * }
697 6862e602 Marcos Assuncao
     { skip$ }
698 6862e602 Marcos Assuncao
   if$
699 6862e602 Marcos Assuncao
write$
700 6862e602 Marcos Assuncao
newline$
701 6862e602 Marcos Assuncao
}
702 6862e602 Marcos Assuncao
703 6862e602 Marcos Assuncao
704 6862e602 Marcos Assuncao
FUNCTION {is.last.char.not.punct}
705 6862e602 Marcos Assuncao
{ duplicate$
706 6862e602 Marcos Assuncao
   "}" * add.period$
707 6862e602 Marcos Assuncao
   #-1 #1 substring$ "." =
708 6862e602 Marcos Assuncao
}
709 6862e602 Marcos Assuncao
710 6862e602 Marcos Assuncao
FUNCTION {is.multiple.pages}
711 6862e602 Marcos Assuncao
{ 't :=
712 6862e602 Marcos Assuncao
  #0 'multiresult :=
713 6862e602 Marcos Assuncao
    { multiresult not
714 6862e602 Marcos Assuncao
      t empty$ not
715 6862e602 Marcos Assuncao
      and
716 6862e602 Marcos Assuncao
    }
717 6862e602 Marcos Assuncao
    { t #1 #1 substring$
718 6862e602 Marcos Assuncao
      duplicate$ "-" =
719 6862e602 Marcos Assuncao
      swap$ duplicate$ "," =
720 6862e602 Marcos Assuncao
      swap$ "+" =
721 6862e602 Marcos Assuncao
      or or
722 6862e602 Marcos Assuncao
        { #1 'multiresult := }
723 6862e602 Marcos Assuncao
        { t #2 global.max$ substring$ 't := }
724 6862e602 Marcos Assuncao
      if$
725 6862e602 Marcos Assuncao
    }
726 6862e602 Marcos Assuncao
  while$
727 6862e602 Marcos Assuncao
  multiresult
728 6862e602 Marcos Assuncao
}
729 6862e602 Marcos Assuncao
730 6862e602 Marcos Assuncao
FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
731 6862e602 Marcos Assuncao
732 6862e602 Marcos Assuncao
FUNCTION {emphasize}
733 6862e602 Marcos Assuncao
{ duplicate$ empty$
734 6862e602 Marcos Assuncao
    { pop$ "" }
735 6862e602 Marcos Assuncao
    { "\emph{" swap$ * "}" * }
736 6862e602 Marcos Assuncao
  if$
737 6862e602 Marcos Assuncao
}
738 6862e602 Marcos Assuncao
739 6862e602 Marcos Assuncao
FUNCTION {do.name.latex.cmd}
740 6862e602 Marcos Assuncao
{ name.latex.cmd
741 6862e602 Marcos Assuncao
  empty$
742 6862e602 Marcos Assuncao
    { skip$ }
743 6862e602 Marcos Assuncao
    { name.latex.cmd "{" * swap$ * "}" * }
744 6862e602 Marcos Assuncao
  if$
745 6862e602 Marcos Assuncao
}
746 6862e602 Marcos Assuncao
747 6862e602 Marcos Assuncao
% IEEEtran.bst uses its own \BIBforeignlanguage command which directly
748 6862e602 Marcos Assuncao
% invokes the TeX hyphenation patterns without the need of the Babel
749 6862e602 Marcos Assuncao
% package. Babel does a lot more than switch hyphenation patterns and
750 6862e602 Marcos Assuncao
% its loading can cause unintended effects in many class files (such as
751 6862e602 Marcos Assuncao
% IEEEtran.cls).
752 6862e602 Marcos Assuncao
FUNCTION {select.language}
753 6862e602 Marcos Assuncao
{ duplicate$ empty$ 'pop$
754 6862e602 Marcos Assuncao
    { language empty$ 'skip$
755 6862e602 Marcos Assuncao
        { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
756 6862e602 Marcos Assuncao
      if$
757 6862e602 Marcos Assuncao
    }
758 6862e602 Marcos Assuncao
  if$
759 6862e602 Marcos Assuncao
}
760 6862e602 Marcos Assuncao
761 6862e602 Marcos Assuncao
FUNCTION {tie.or.space.prefix}
762 6862e602 Marcos Assuncao
{ duplicate$ text.length$ #3 <
763 6862e602 Marcos Assuncao
    { "~" }
764 6862e602 Marcos Assuncao
    { " " }
765 6862e602 Marcos Assuncao
  if$
766 6862e602 Marcos Assuncao
  swap$
767 6862e602 Marcos Assuncao
}
768 6862e602 Marcos Assuncao
769 6862e602 Marcos Assuncao
FUNCTION {get.bbl.editor}
770 6862e602 Marcos Assuncao
{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
771 6862e602 Marcos Assuncao
772 6862e602 Marcos Assuncao
FUNCTION {space.word}{ " " swap$ * " " * }
773 6862e602 Marcos Assuncao
774 6862e602 Marcos Assuncao
775 6862e602 Marcos Assuncao
% Field Conditioners, Converters, Checkers and External Interfaces
776 6862e602 Marcos Assuncao
777 6862e602 Marcos Assuncao
FUNCTION {empty.field.to.null.string}
778 6862e602 Marcos Assuncao
{ duplicate$ empty$
779 6862e602 Marcos Assuncao
    { pop$ "" }
780 6862e602 Marcos Assuncao
    { skip$ }
781 6862e602 Marcos Assuncao
  if$
782 6862e602 Marcos Assuncao
}
783 6862e602 Marcos Assuncao
784 6862e602 Marcos Assuncao
FUNCTION {either.or.check}
785 6862e602 Marcos Assuncao
{ empty$
786 6862e602 Marcos Assuncao
    { pop$ }
787 6862e602 Marcos Assuncao
    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
788 6862e602 Marcos Assuncao
  if$
789 6862e602 Marcos Assuncao
}
790 6862e602 Marcos Assuncao
791 6862e602 Marcos Assuncao
FUNCTION {empty.entry.warn}
792 6862e602 Marcos Assuncao
{ author empty$ title empty$ howpublished empty$
793 6862e602 Marcos Assuncao
  month empty$ year empty$ note empty$ url empty$
794 6862e602 Marcos Assuncao
  and and and and and and
795 6862e602 Marcos Assuncao
    { "all relevant fields are empty in " cite$ * warning$ }
796 6862e602 Marcos Assuncao
    'skip$
797 6862e602 Marcos Assuncao
  if$
798 6862e602 Marcos Assuncao
}
799 6862e602 Marcos Assuncao
800 6862e602 Marcos Assuncao
801 6862e602 Marcos Assuncao
% The bibinfo system provides a way for the electronic parsing/acquisition
802 6862e602 Marcos Assuncao
% of a bibliography's contents as is done by ReVTeX. For example, a field
803 6862e602 Marcos Assuncao
% could be entered into the bibliography as:
804 6862e602 Marcos Assuncao
% \bibinfo{volume}{2}
805 6862e602 Marcos Assuncao
% Only the "2" would show up in the document, but the LaTeX \bibinfo command
806 6862e602 Marcos Assuncao
% could do additional things with the information. IEEEtran.bst does provide
807 6862e602 Marcos Assuncao
% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
808 6862e602 Marcos Assuncao
% currently not used as the bogus bibinfo functions defined here output the
809 6862e602 Marcos Assuncao
% entry values directly without the \bibinfo wrapper. The bibinfo functions
810 6862e602 Marcos Assuncao
% themselves (and the calls to them) are retained for possible future use.
811 6862e602 Marcos Assuncao
% 
812 6862e602 Marcos Assuncao
% bibinfo.check avoids acting on missing fields while bibinfo.warn will
813 6862e602 Marcos Assuncao
% issue a warning message if a missing field is detected. Prior to calling
814 6862e602 Marcos Assuncao
% the bibinfo functions, the user should push the field value and then its
815 6862e602 Marcos Assuncao
% name string, in that order.
816 6862e602 Marcos Assuncao
817 6862e602 Marcos Assuncao
FUNCTION {bibinfo.check}
818 6862e602 Marcos Assuncao
{ swap$ duplicate$ missing$
819 6862e602 Marcos Assuncao
    { pop$ pop$ "" }
820 6862e602 Marcos Assuncao
    { duplicate$ empty$
821 6862e602 Marcos Assuncao
        { swap$ pop$ }
822 6862e602 Marcos Assuncao
        { swap$ pop$ }
823 6862e602 Marcos Assuncao
      if$
824 6862e602 Marcos Assuncao
    }
825 6862e602 Marcos Assuncao
  if$
826 6862e602 Marcos Assuncao
}
827 6862e602 Marcos Assuncao
828 6862e602 Marcos Assuncao
FUNCTION {bibinfo.warn}
829 6862e602 Marcos Assuncao
{ swap$ duplicate$ missing$
830 6862e602 Marcos Assuncao
    { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
831 6862e602 Marcos Assuncao
    { duplicate$ empty$
832 6862e602 Marcos Assuncao
        { swap$ "empty " swap$ * " in " * cite$ * warning$ }
833 6862e602 Marcos Assuncao
        { swap$ pop$ }
834 6862e602 Marcos Assuncao
      if$
835 6862e602 Marcos Assuncao
    }
836 6862e602 Marcos Assuncao
  if$
837 6862e602 Marcos Assuncao
}
838 6862e602 Marcos Assuncao
839 6862e602 Marcos Assuncao
840 6862e602 Marcos Assuncao
% IEEE separates large numbers with more than 4 digits into groups of
841 6862e602 Marcos Assuncao
% three. IEEE uses a small space to separate these number groups. 
842 6862e602 Marcos Assuncao
% Typical applications include patent and page numbers.
843 6862e602 Marcos Assuncao
844 6862e602 Marcos Assuncao
% number of consecutive digits required to trigger the group separation.
845 6862e602 Marcos Assuncao
FUNCTION {large.number.trigger}{ #5 }
846 6862e602 Marcos Assuncao
847 6862e602 Marcos Assuncao
% For numbers longer than the trigger, this is the blocksize of the groups.
848 6862e602 Marcos Assuncao
% The blocksize must be less than the trigger threshold, and 2 * blocksize
849 6862e602 Marcos Assuncao
% must be greater than the trigger threshold (can't do more than one
850 6862e602 Marcos Assuncao
% separation on the initial trigger).
851 6862e602 Marcos Assuncao
FUNCTION {large.number.blocksize}{ #3 }
852 6862e602 Marcos Assuncao
853 6862e602 Marcos Assuncao
% What is actually inserted between the number groups.
854 6862e602 Marcos Assuncao
FUNCTION {large.number.separator}{ "\," }
855 6862e602 Marcos Assuncao
856 6862e602 Marcos Assuncao
% So as to save on integer variables by reusing existing ones, numnames
857 6862e602 Marcos Assuncao
% holds the current number of consecutive digits read and nameptr holds
858 6862e602 Marcos Assuncao
% the number that will trigger an inserted space.
859 6862e602 Marcos Assuncao
FUNCTION {large.number.separate}
860 6862e602 Marcos Assuncao
{ 't :=
861 6862e602 Marcos Assuncao
  ""
862 6862e602 Marcos Assuncao
  #0 'numnames :=
863 6862e602 Marcos Assuncao
  large.number.trigger 'nameptr :=
864 6862e602 Marcos Assuncao
  { t empty$ not }
865 6862e602 Marcos Assuncao
  { t #-1 #1 substring$ is.num
866 6862e602 Marcos Assuncao
      { numnames #1 + 'numnames := }
867 6862e602 Marcos Assuncao
      { #0 'numnames := 
868 6862e602 Marcos Assuncao
        large.number.trigger 'nameptr :=
869 6862e602 Marcos Assuncao
      }
870 6862e602 Marcos Assuncao
    if$
871 6862e602 Marcos Assuncao
    t #-1 #1 substring$ swap$ *
872 6862e602 Marcos Assuncao
    t #-2 global.max$ substring$ 't :=
873 6862e602 Marcos Assuncao
    numnames nameptr =
874 6862e602 Marcos Assuncao
      { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
875 6862e602 Marcos Assuncao
        nameptr large.number.blocksize - #1 + global.max$ substring$
876 6862e602 Marcos Assuncao
        large.number.separator swap$ * *
877 6862e602 Marcos Assuncao
        nameptr large.number.blocksize - 'numnames :=
878 6862e602 Marcos Assuncao
        large.number.blocksize #1 + 'nameptr :=
879 6862e602 Marcos Assuncao
      }
880 6862e602 Marcos Assuncao
      { skip$ }
881 6862e602 Marcos Assuncao
    if$
882 6862e602 Marcos Assuncao
  }
883 6862e602 Marcos Assuncao
  while$
884 6862e602 Marcos Assuncao
}
885 6862e602 Marcos Assuncao
886 6862e602 Marcos Assuncao
% Converts all single dashes "-" to double dashes "--".
887 6862e602 Marcos Assuncao
FUNCTION {n.dashify}
888 6862e602 Marcos Assuncao
{ large.number.separate
889 6862e602 Marcos Assuncao
  't :=
890 6862e602 Marcos Assuncao
  ""
891 6862e602 Marcos Assuncao
    { t empty$ not }
892 6862e602 Marcos Assuncao
    { t #1 #1 substring$ "-" =
893 6862e602 Marcos Assuncao
        { t #1 #2 substring$ "--" = not
894 6862e602 Marcos Assuncao
            { "--" *
895 6862e602 Marcos Assuncao
              t #2 global.max$ substring$ 't :=
896 6862e602 Marcos Assuncao
            }
897 6862e602 Marcos Assuncao
            {   { t #1 #1 substring$ "-" = }
898 6862e602 Marcos Assuncao
                { "-" *
899 6862e602 Marcos Assuncao
                  t #2 global.max$ substring$ 't :=
900 6862e602 Marcos Assuncao
                }
901 6862e602 Marcos Assuncao
              while$
902 6862e602 Marcos Assuncao
            }
903 6862e602 Marcos Assuncao
          if$
904 6862e602 Marcos Assuncao
        }
905 6862e602 Marcos Assuncao
        { t #1 #1 substring$ *
906 6862e602 Marcos Assuncao
          t #2 global.max$ substring$ 't :=
907 6862e602 Marcos Assuncao
        }
908 6862e602 Marcos Assuncao
      if$
909 6862e602 Marcos Assuncao
    }
910 6862e602 Marcos Assuncao
  while$
911 6862e602 Marcos Assuncao
}
912 6862e602 Marcos Assuncao
913 6862e602 Marcos Assuncao
914 6862e602 Marcos Assuncao
% This function detects entries with names that are identical to that of
915 6862e602 Marcos Assuncao
% the previous entry and replaces the repeated names with dashes (if the
916 6862e602 Marcos Assuncao
% "is.dash.repeated.names" user control is nonzero).
917 6862e602 Marcos Assuncao
FUNCTION {name.or.dash}
918 6862e602 Marcos Assuncao
{ 's :=
919 6862e602 Marcos Assuncao
   oldname empty$
920 6862e602 Marcos Assuncao
     { s 'oldname := s }
921 6862e602 Marcos Assuncao
     { s oldname =
922 6862e602 Marcos Assuncao
         { is.dash.repeated.names
923 6862e602 Marcos Assuncao
              { repeated.name.dashes }
924 6862e602 Marcos Assuncao
              { s 'oldname := s }
925 6862e602 Marcos Assuncao
            if$
926 6862e602 Marcos Assuncao
         }
927 6862e602 Marcos Assuncao
         { s 'oldname := s }
928 6862e602 Marcos Assuncao
       if$
929 6862e602 Marcos Assuncao
     }
930 6862e602 Marcos Assuncao
   if$
931 6862e602 Marcos Assuncao
}
932 6862e602 Marcos Assuncao
933 6862e602 Marcos Assuncao
% Converts the number string on the top of the stack to
934 6862e602 Marcos Assuncao
% "numerical ordinal form" (e.g., "7" to "7th"). There is
935 6862e602 Marcos Assuncao
% no artificial limit to the upper bound of the numbers as the
936 6862e602 Marcos Assuncao
% least significant digit always determines the ordinal form.
937 6862e602 Marcos Assuncao
FUNCTION {num.to.ordinal}
938 6862e602 Marcos Assuncao
{ duplicate$ #-1 #1 substring$ "1" =
939 6862e602 Marcos Assuncao
     { bbl.st * }
940 6862e602 Marcos Assuncao
     { duplicate$ #-1 #1 substring$ "2" =
941 6862e602 Marcos Assuncao
         { bbl.nd * }
942 6862e602 Marcos Assuncao
         { duplicate$ #-1 #1 substring$ "3" =
943 6862e602 Marcos Assuncao
             { bbl.rd * }
944 6862e602 Marcos Assuncao
             { bbl.th * }
945 6862e602 Marcos Assuncao
           if$
946 6862e602 Marcos Assuncao
         }
947 6862e602 Marcos Assuncao
       if$
948 6862e602 Marcos Assuncao
     }
949 6862e602 Marcos Assuncao
   if$
950 6862e602 Marcos Assuncao
}
951 6862e602 Marcos Assuncao
952 6862e602 Marcos Assuncao
% If the string on the top of the stack begins with a number,
953 6862e602 Marcos Assuncao
% (e.g., 11th) then replace the string with the leading number
954 6862e602 Marcos Assuncao
% it contains. Otherwise retain the string as-is. s holds the
955 6862e602 Marcos Assuncao
% extracted number, t holds the part of the string that remains
956 6862e602 Marcos Assuncao
% to be scanned.
957 6862e602 Marcos Assuncao
FUNCTION {extract.num}
958 6862e602 Marcos Assuncao
{ duplicate$ 't :=
959 6862e602 Marcos Assuncao
  "" 's :=
960 6862e602 Marcos Assuncao
  { t empty$ not }
961 6862e602 Marcos Assuncao
  { t #1 #1 substring$
962 6862e602 Marcos Assuncao
    t #2 global.max$ substring$ 't :=
963 6862e602 Marcos Assuncao
    duplicate$ is.num
964 6862e602 Marcos Assuncao
      { s swap$ * 's := }
965 6862e602 Marcos Assuncao
      { pop$ "" 't := }
966 6862e602 Marcos Assuncao
    if$
967 6862e602 Marcos Assuncao
  }
968 6862e602 Marcos Assuncao
  while$
969 6862e602 Marcos Assuncao
  s empty$
970 6862e602 Marcos Assuncao
    'skip$
971 6862e602 Marcos Assuncao
    { pop$ s }
972 6862e602 Marcos Assuncao
  if$
973 6862e602 Marcos Assuncao
}
974 6862e602 Marcos Assuncao
975 6862e602 Marcos Assuncao
% Converts the word number string on the top of the stack to
976 6862e602 Marcos Assuncao
% Arabic string form. Will be successful up to "tenth".
977 6862e602 Marcos Assuncao
FUNCTION {word.to.num}
978 6862e602 Marcos Assuncao
{ duplicate$ "l" change.case$ 's :=
979 6862e602 Marcos Assuncao
  s "first" =
980 6862e602 Marcos Assuncao
    { pop$ "1" }
981 6862e602 Marcos Assuncao
    { skip$ }
982 6862e602 Marcos Assuncao
  if$
983 6862e602 Marcos Assuncao
  s "second" =
984 6862e602 Marcos Assuncao
    { pop$ "2" }
985 6862e602 Marcos Assuncao
    { skip$ }
986 6862e602 Marcos Assuncao
  if$
987 6862e602 Marcos Assuncao
  s "third" =
988 6862e602 Marcos Assuncao
    { pop$ "3" }
989 6862e602 Marcos Assuncao
    { skip$ }
990 6862e602 Marcos Assuncao
  if$
991 6862e602 Marcos Assuncao
  s "fourth" =
992 6862e602 Marcos Assuncao
    { pop$ "4" }
993 6862e602 Marcos Assuncao
    { skip$ }
994 6862e602 Marcos Assuncao
  if$
995 6862e602 Marcos Assuncao
  s "fifth" =
996 6862e602 Marcos Assuncao
    { pop$ "5" }
997 6862e602 Marcos Assuncao
    { skip$ }
998 6862e602 Marcos Assuncao
  if$
999 6862e602 Marcos Assuncao
  s "sixth" =
1000 6862e602 Marcos Assuncao
    { pop$ "6" }
1001 6862e602 Marcos Assuncao
    { skip$ }
1002 6862e602 Marcos Assuncao
  if$
1003 6862e602 Marcos Assuncao
  s "seventh" =
1004 6862e602 Marcos Assuncao
    { pop$ "7" }
1005 6862e602 Marcos Assuncao
    { skip$ }
1006 6862e602 Marcos Assuncao
  if$
1007 6862e602 Marcos Assuncao
  s "eighth" =
1008 6862e602 Marcos Assuncao
    { pop$ "8" }
1009 6862e602 Marcos Assuncao
    { skip$ }
1010 6862e602 Marcos Assuncao
  if$
1011 6862e602 Marcos Assuncao
  s "ninth" =
1012 6862e602 Marcos Assuncao
    { pop$ "9" }
1013 6862e602 Marcos Assuncao
    { skip$ }
1014 6862e602 Marcos Assuncao
  if$
1015 6862e602 Marcos Assuncao
  s "tenth" =
1016 6862e602 Marcos Assuncao
    { pop$ "10" }
1017 6862e602 Marcos Assuncao
    { skip$ }
1018 6862e602 Marcos Assuncao
  if$
1019 6862e602 Marcos Assuncao
}
1020 6862e602 Marcos Assuncao
1021 6862e602 Marcos Assuncao
1022 6862e602 Marcos Assuncao
% Converts the string on the top of the stack to numerical
1023 6862e602 Marcos Assuncao
% ordinal (e.g., "11th") form.
1024 6862e602 Marcos Assuncao
FUNCTION {convert.edition}
1025 6862e602 Marcos Assuncao
{ duplicate$ empty$ 'skip$
1026 6862e602 Marcos Assuncao
    { duplicate$ #1 #1 substring$ is.num
1027 6862e602 Marcos Assuncao
        { extract.num
1028 6862e602 Marcos Assuncao
          num.to.ordinal
1029 6862e602 Marcos Assuncao
        }
1030 6862e602 Marcos Assuncao
        { word.to.num
1031 6862e602 Marcos Assuncao
          duplicate$ #1 #1 substring$ is.num
1032 6862e602 Marcos Assuncao
            { num.to.ordinal }
1033 6862e602 Marcos Assuncao
            { "edition ordinal word " quote$ * edition * quote$ *
1034 6862e602 Marcos Assuncao
              " may be too high (or improper) for conversion" * " in " * cite$ * warning$
1035 6862e602 Marcos Assuncao
            }
1036 6862e602 Marcos Assuncao
          if$
1037 6862e602 Marcos Assuncao
        }
1038 6862e602 Marcos Assuncao
      if$
1039 6862e602 Marcos Assuncao
    }
1040 6862e602 Marcos Assuncao
  if$
1041 6862e602 Marcos Assuncao
}
1042 6862e602 Marcos Assuncao
1043 6862e602 Marcos Assuncao
1044 6862e602 Marcos Assuncao
1045 6862e602 Marcos Assuncao
1046 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1047 6862e602 Marcos Assuncao
%% LATEX BIBLIOGRAPHY CODE %%
1048 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1049 6862e602 Marcos Assuncao
1050 6862e602 Marcos Assuncao
FUNCTION {start.entry}
1051 6862e602 Marcos Assuncao
{ newline$
1052 6862e602 Marcos Assuncao
  "\bibitem{" write$
1053 6862e602 Marcos Assuncao
  cite$ write$
1054 6862e602 Marcos Assuncao
  "}" write$
1055 6862e602 Marcos Assuncao
  newline$
1056 6862e602 Marcos Assuncao
  ""
1057 6862e602 Marcos Assuncao
  initialize.prev.this.status
1058 6862e602 Marcos Assuncao
}
1059 6862e602 Marcos Assuncao
1060 6862e602 Marcos Assuncao
% Here we write out all the LaTeX code that we will need. The most involved
1061 6862e602 Marcos Assuncao
% code sequences are those that control the alternate interword spacing and
1062 6862e602 Marcos Assuncao
% foreign language hyphenation patterns. The heavy use of \providecommand
1063 6862e602 Marcos Assuncao
% gives users a way to override the defaults. Special thanks to Javier Bezos,
1064 6862e602 Marcos Assuncao
% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
1065 6862e602 Marcos Assuncao
% the other gurus on comp.text.tex for their help and advice on the topic of
1066 6862e602 Marcos Assuncao
% \selectlanguage, Babel and BibTeX.
1067 6862e602 Marcos Assuncao
FUNCTION {begin.bib}
1068 6862e602 Marcos Assuncao
{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
1069 6862e602 Marcos Assuncao
  write$ newline$
1070 6862e602 Marcos Assuncao
  preamble$ empty$ 'skip$
1071 6862e602 Marcos Assuncao
    { preamble$ write$ newline$ }
1072 6862e602 Marcos Assuncao
  if$
1073 6862e602 Marcos Assuncao
  "\begin{thebibliography}{"  longest.label  * "}" *
1074 6862e602 Marcos Assuncao
  write$ newline$
1075 6862e602 Marcos Assuncao
  "\providecommand{\url}[1]{#1}"
1076 6862e602 Marcos Assuncao
  write$ newline$
1077 6862e602 Marcos Assuncao
  "\csname url@samestyle\endcsname"
1078 6862e602 Marcos Assuncao
  write$ newline$
1079 6862e602 Marcos Assuncao
  "\providecommand{\newblock}{\relax}"
1080 6862e602 Marcos Assuncao
  write$ newline$
1081 6862e602 Marcos Assuncao
  "\providecommand{\bibinfo}[2]{#2}"
1082 6862e602 Marcos Assuncao
  write$ newline$
1083 6862e602 Marcos Assuncao
  "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
1084 6862e602 Marcos Assuncao
  write$ newline$
1085 6862e602 Marcos Assuncao
  "\providecommand{\BIBentryALTinterwordstretchfactor}{"
1086 6862e602 Marcos Assuncao
  ALTinterwordstretchfactor * "}" *
1087 6862e602 Marcos Assuncao
  write$ newline$
1088 6862e602 Marcos Assuncao
  "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
1089 6862e602 Marcos Assuncao
  write$ newline$
1090 6862e602 Marcos Assuncao
  "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
1091 6862e602 Marcos Assuncao
  write$ newline$
1092 6862e602 Marcos Assuncao
  "\providecommand{\BIBforeignlanguage}[2]{{%"
1093 6862e602 Marcos Assuncao
  write$ newline$
1094 6862e602 Marcos Assuncao
  "\expandafter\ifx\csname l@#1\endcsname\relax"
1095 6862e602 Marcos Assuncao
  write$ newline$
1096 6862e602 Marcos Assuncao
  "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%"
1097 6862e602 Marcos Assuncao
  write$ newline$
1098 6862e602 Marcos Assuncao
  "\typeout{** loaded for the language `#1'. Using the pattern for}%"
1099 6862e602 Marcos Assuncao
  write$ newline$
1100 6862e602 Marcos Assuncao
  "\typeout{** the default language instead.}%"
1101 6862e602 Marcos Assuncao
  write$ newline$
1102 6862e602 Marcos Assuncao
  "\else"
1103 6862e602 Marcos Assuncao
  write$ newline$
1104 6862e602 Marcos Assuncao
  "\language=\csname l@#1\endcsname"
1105 6862e602 Marcos Assuncao
  write$ newline$
1106 6862e602 Marcos Assuncao
  "\fi"
1107 6862e602 Marcos Assuncao
  write$ newline$
1108 6862e602 Marcos Assuncao
  "#2}}"
1109 6862e602 Marcos Assuncao
  write$ newline$
1110 6862e602 Marcos Assuncao
  "\providecommand{\BIBdecl}{\relax}"
1111 6862e602 Marcos Assuncao
  write$ newline$
1112 6862e602 Marcos Assuncao
  "\BIBdecl"
1113 6862e602 Marcos Assuncao
  write$ newline$
1114 6862e602 Marcos Assuncao
}
1115 6862e602 Marcos Assuncao
1116 6862e602 Marcos Assuncao
FUNCTION {end.bib}
1117 6862e602 Marcos Assuncao
{ newline$ "\end{thebibliography}" write$ newline$ }
1118 6862e602 Marcos Assuncao
1119 6862e602 Marcos Assuncao
FUNCTION {if.url.alt.interword.spacing}
1120 6862e602 Marcos Assuncao
{ is.use.alt.interword.spacing 
1121 6862e602 Marcos Assuncao
     {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$}
1122 6862e602 Marcos Assuncao
     { skip$ }
1123 6862e602 Marcos Assuncao
   if$
1124 6862e602 Marcos Assuncao
}
1125 6862e602 Marcos Assuncao
1126 6862e602 Marcos Assuncao
FUNCTION {if.url.std.interword.spacing}
1127 6862e602 Marcos Assuncao
{ is.use.alt.interword.spacing 
1128 6862e602 Marcos Assuncao
     {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$}
1129 6862e602 Marcos Assuncao
     { skip$ }
1130 6862e602 Marcos Assuncao
   if$
1131 6862e602 Marcos Assuncao
}
1132 6862e602 Marcos Assuncao
1133 6862e602 Marcos Assuncao
1134 6862e602 Marcos Assuncao
1135 6862e602 Marcos Assuncao
1136 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%
1137 6862e602 Marcos Assuncao
%% LONGEST LABEL PASS %%
1138 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%%%%
1139 6862e602 Marcos Assuncao
1140 6862e602 Marcos Assuncao
FUNCTION {initialize.longest.label}
1141 6862e602 Marcos Assuncao
{ "" 'longest.label :=
1142 6862e602 Marcos Assuncao
  #1 'number.label :=
1143 6862e602 Marcos Assuncao
  #0 'longest.label.width :=
1144 6862e602 Marcos Assuncao
}
1145 6862e602 Marcos Assuncao
1146 6862e602 Marcos Assuncao
FUNCTION {longest.label.pass}
1147 6862e602 Marcos Assuncao
{ type$ "ieeetranbstctl" =
1148 6862e602 Marcos Assuncao
    { skip$ }
1149 6862e602 Marcos Assuncao
    { number.label int.to.str$ 'label :=
1150 6862e602 Marcos Assuncao
      number.label #1 + 'number.label :=
1151 6862e602 Marcos Assuncao
      label width$ longest.label.width >
1152 6862e602 Marcos Assuncao
        { label 'longest.label :=
1153 6862e602 Marcos Assuncao
          label width$ 'longest.label.width :=
1154 6862e602 Marcos Assuncao
        }
1155 6862e602 Marcos Assuncao
        { skip$ }
1156 6862e602 Marcos Assuncao
      if$
1157 6862e602 Marcos Assuncao
    }
1158 6862e602 Marcos Assuncao
  if$
1159 6862e602 Marcos Assuncao
}
1160 6862e602 Marcos Assuncao
1161 6862e602 Marcos Assuncao
1162 6862e602 Marcos Assuncao
1163 6862e602 Marcos Assuncao
1164 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%
1165 6862e602 Marcos Assuncao
%% FORMAT HANDLERS %%
1166 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%%
1167 6862e602 Marcos Assuncao
1168 6862e602 Marcos Assuncao
%% Lower Level Formats (used by higher level formats)
1169 6862e602 Marcos Assuncao
1170 6862e602 Marcos Assuncao
FUNCTION {format.address.org.or.pub.date}
1171 6862e602 Marcos Assuncao
{ 't :=
1172 6862e602 Marcos Assuncao
  ""
1173 6862e602 Marcos Assuncao
  year empty$
1174 6862e602 Marcos Assuncao
    { "empty year in " cite$ * warning$ }
1175 6862e602 Marcos Assuncao
    { skip$ }
1176 6862e602 Marcos Assuncao
  if$
1177 6862e602 Marcos Assuncao
  address empty$ t empty$ and
1178 6862e602 Marcos Assuncao
  year empty$ and month empty$ and
1179 6862e602 Marcos Assuncao
    { skip$ }
1180 6862e602 Marcos Assuncao
    { this.to.prev.status
1181 6862e602 Marcos Assuncao
      this.status.std
1182 6862e602 Marcos Assuncao
      cap.status.std
1183 6862e602 Marcos Assuncao
      address "address" bibinfo.check *
1184 6862e602 Marcos Assuncao
      t empty$
1185 6862e602 Marcos Assuncao
        { skip$ }
1186 6862e602 Marcos Assuncao
        { punct.period 'prev.status.punct :=
1187 6862e602 Marcos Assuncao
          space.large 'prev.status.space :=
1188 6862e602 Marcos Assuncao
          address empty$
1189 6862e602 Marcos Assuncao
            { skip$ }
1190 6862e602 Marcos Assuncao
            { ": " * }
1191 6862e602 Marcos Assuncao
          if$
1192 6862e602 Marcos Assuncao
          t *
1193 6862e602 Marcos Assuncao
        }
1194 6862e602 Marcos Assuncao
      if$
1195 6862e602 Marcos Assuncao
      year empty$ month empty$ and
1196 6862e602 Marcos Assuncao
        { skip$ }
1197 6862e602 Marcos Assuncao
        { t empty$ address empty$ and
1198 6862e602 Marcos Assuncao
            { skip$ }
1199 6862e602 Marcos Assuncao
            { ", " * }
1200 6862e602 Marcos Assuncao
          if$
1201 6862e602 Marcos Assuncao
          month empty$
1202 6862e602 Marcos Assuncao
            { year empty$
1203 6862e602 Marcos Assuncao
                { skip$ }
1204 6862e602 Marcos Assuncao
                { year "year" bibinfo.check * }
1205 6862e602 Marcos Assuncao
              if$
1206 6862e602 Marcos Assuncao
            }
1207 6862e602 Marcos Assuncao
            { month "month" bibinfo.check *
1208 6862e602 Marcos Assuncao
              year empty$
1209 6862e602 Marcos Assuncao
                 { skip$ }
1210 6862e602 Marcos Assuncao
                 { " " * year "year" bibinfo.check * }
1211 6862e602 Marcos Assuncao
              if$
1212 6862e602 Marcos Assuncao
            }
1213 6862e602 Marcos Assuncao
          if$
1214 6862e602 Marcos Assuncao
        }
1215 6862e602 Marcos Assuncao
      if$
1216 6862e602 Marcos Assuncao
    }
1217 6862e602 Marcos Assuncao
  if$
1218 6862e602 Marcos Assuncao
}
1219 6862e602 Marcos Assuncao
1220 6862e602 Marcos Assuncao
1221 6862e602 Marcos Assuncao
FUNCTION {format.names}
1222 6862e602 Marcos Assuncao
{ 'bibinfo :=
1223 6862e602 Marcos Assuncao
  duplicate$ empty$ 'skip$ {
1224 6862e602 Marcos Assuncao
  this.to.prev.status
1225 6862e602 Marcos Assuncao
  this.status.std
1226 6862e602 Marcos Assuncao
  's :=
1227 6862e602 Marcos Assuncao
  "" 't :=
1228 6862e602 Marcos Assuncao
  #1 'nameptr :=
1229 6862e602 Marcos Assuncao
  s num.names$ 'numnames :=
1230 6862e602 Marcos Assuncao
  numnames 'namesleft :=
1231 6862e602 Marcos Assuncao
    { namesleft #0 > }
1232 6862e602 Marcos Assuncao
    { s nameptr
1233 6862e602 Marcos Assuncao
      name.format.string
1234 6862e602 Marcos Assuncao
      format.name$
1235 6862e602 Marcos Assuncao
      bibinfo bibinfo.check
1236 6862e602 Marcos Assuncao
      't :=
1237 6862e602 Marcos Assuncao
      nameptr #1 >
1238 6862e602 Marcos Assuncao
        { nameptr num.names.shown.with.forced.et.al #1 + =
1239 6862e602 Marcos Assuncao
          numnames max.num.names.before.forced.et.al >
1240 6862e602 Marcos Assuncao
          is.forced.et.al and and
1241 6862e602 Marcos Assuncao
            { "others" 't :=
1242 6862e602 Marcos Assuncao
              #1 'namesleft :=
1243 6862e602 Marcos Assuncao
            }
1244 6862e602 Marcos Assuncao
            { skip$ }
1245 6862e602 Marcos Assuncao
          if$
1246 6862e602 Marcos Assuncao
          namesleft #1 >
1247 6862e602 Marcos Assuncao
            { ", " * t do.name.latex.cmd * }
1248 6862e602 Marcos Assuncao
            { s nameptr "{ll}" format.name$ duplicate$ "others" =
1249 6862e602 Marcos Assuncao
                { 't := }
1250 6862e602 Marcos Assuncao
                { pop$ }
1251 6862e602 Marcos Assuncao
              if$
1252 6862e602 Marcos Assuncao
              t "others" =
1253 6862e602 Marcos Assuncao
                { " " * bbl.etal emphasize * }
1254 6862e602 Marcos Assuncao
                { numnames #2 >
1255 6862e602 Marcos Assuncao
                    { "," * }
1256 6862e602 Marcos Assuncao
                    { skip$ }
1257 6862e602 Marcos Assuncao
                  if$
1258 6862e602 Marcos Assuncao
                  bbl.and
1259 6862e602 Marcos Assuncao
                  space.word * t do.name.latex.cmd *
1260 6862e602 Marcos Assuncao
                }
1261 6862e602 Marcos Assuncao
              if$
1262 6862e602 Marcos Assuncao
            }
1263 6862e602 Marcos Assuncao
          if$
1264 6862e602 Marcos Assuncao
        }
1265 6862e602 Marcos Assuncao
        { t do.name.latex.cmd }
1266 6862e602 Marcos Assuncao
      if$
1267 6862e602 Marcos Assuncao
      nameptr #1 + 'nameptr :=
1268 6862e602 Marcos Assuncao
      namesleft #1 - 'namesleft :=
1269 6862e602 Marcos Assuncao
    }
1270 6862e602 Marcos Assuncao
  while$
1271 6862e602 Marcos Assuncao
  cap.status.std
1272 6862e602 Marcos Assuncao
  } if$
1273 6862e602 Marcos Assuncao
}
1274 6862e602 Marcos Assuncao
1275 6862e602 Marcos Assuncao
1276 6862e602 Marcos Assuncao
1277 6862e602 Marcos Assuncao
1278 6862e602 Marcos Assuncao
%% Higher Level Formats
1279 6862e602 Marcos Assuncao
1280 6862e602 Marcos Assuncao
%% addresses/locations
1281 6862e602 Marcos Assuncao
1282 6862e602 Marcos Assuncao
FUNCTION {format.address}
1283 6862e602 Marcos Assuncao
{ address duplicate$ empty$ 'skip$
1284 6862e602 Marcos Assuncao
    { this.to.prev.status
1285 6862e602 Marcos Assuncao
      this.status.std
1286 6862e602 Marcos Assuncao
      cap.status.std
1287 6862e602 Marcos Assuncao
    }
1288 6862e602 Marcos Assuncao
  if$
1289 6862e602 Marcos Assuncao
}
1290 6862e602 Marcos Assuncao
1291 6862e602 Marcos Assuncao
1292 6862e602 Marcos Assuncao
1293 6862e602 Marcos Assuncao
%% author/editor names
1294 6862e602 Marcos Assuncao
1295 6862e602 Marcos Assuncao
FUNCTION {format.authors}{ author "author" format.names }
1296 6862e602 Marcos Assuncao
1297 6862e602 Marcos Assuncao
FUNCTION {format.editors}
1298 6862e602 Marcos Assuncao
{ editor "editor" format.names duplicate$ empty$ 'skip$
1299 6862e602 Marcos Assuncao
    { ", " *
1300 6862e602 Marcos Assuncao
      get.bbl.editor
1301 6862e602 Marcos Assuncao
      capitalize
1302 6862e602 Marcos Assuncao
      *
1303 6862e602 Marcos Assuncao
    }
1304 6862e602 Marcos Assuncao
  if$
1305 6862e602 Marcos Assuncao
}
1306 6862e602 Marcos Assuncao
1307 6862e602 Marcos Assuncao
1308 6862e602 Marcos Assuncao
1309 6862e602 Marcos Assuncao
%% date
1310 6862e602 Marcos Assuncao
1311 6862e602 Marcos Assuncao
FUNCTION {format.date}
1312 6862e602 Marcos Assuncao
{
1313 6862e602 Marcos Assuncao
  month "month" bibinfo.check duplicate$ empty$
1314 6862e602 Marcos Assuncao
  year  "year" bibinfo.check duplicate$ empty$
1315 6862e602 Marcos Assuncao
    { swap$ 'skip$
1316 6862e602 Marcos Assuncao
        { this.to.prev.status
1317 6862e602 Marcos Assuncao
          this.status.std
1318 6862e602 Marcos Assuncao
          cap.status.std
1319 6862e602 Marcos Assuncao
         "there's a month but no year in " cite$ * warning$ }
1320 6862e602 Marcos Assuncao
      if$
1321 6862e602 Marcos Assuncao
      *
1322 6862e602 Marcos Assuncao
    }
1323 6862e602 Marcos Assuncao
    { this.to.prev.status
1324 6862e602 Marcos Assuncao
      this.status.std
1325 6862e602 Marcos Assuncao
      cap.status.std
1326 6862e602 Marcos Assuncao
      swap$ 'skip$
1327 6862e602 Marcos Assuncao
        {
1328 6862e602 Marcos Assuncao
          swap$
1329 6862e602 Marcos Assuncao
          " " * swap$
1330 6862e602 Marcos Assuncao
        }
1331 6862e602 Marcos Assuncao
      if$
1332 6862e602 Marcos Assuncao
      *
1333 6862e602 Marcos Assuncao
    }
1334 6862e602 Marcos Assuncao
  if$
1335 6862e602 Marcos Assuncao
}
1336 6862e602 Marcos Assuncao
1337 6862e602 Marcos Assuncao
FUNCTION {format.date.electronic}
1338 6862e602 Marcos Assuncao
{ month "month" bibinfo.check duplicate$ empty$
1339 6862e602 Marcos Assuncao
  year  "year" bibinfo.check duplicate$ empty$
1340 6862e602 Marcos Assuncao
    { swap$ 
1341 6862e602 Marcos Assuncao
        { pop$ }
1342 6862e602 Marcos Assuncao
        { "there's a month but no year in " cite$ * warning$
1343 6862e602 Marcos Assuncao
        pop$ ")" * "(" swap$ *
1344 6862e602 Marcos Assuncao
        this.to.prev.status
1345 6862e602 Marcos Assuncao
        punct.no 'this.status.punct :=
1346 6862e602 Marcos Assuncao
        space.normal 'this.status.space :=
1347 6862e602 Marcos Assuncao
        quote.no 'this.status.quote :=
1348 6862e602 Marcos Assuncao
        cap.yes  'status.cap :=
1349 6862e602 Marcos Assuncao
        }
1350 6862e602 Marcos Assuncao
      if$
1351 6862e602 Marcos Assuncao
    }
1352 6862e602 Marcos Assuncao
    { swap$ 
1353 6862e602 Marcos Assuncao
        { swap$ pop$ ")" * "(" swap$ * }
1354 6862e602 Marcos Assuncao
        { "(" swap$ * ", " * swap$ * ")" * }
1355 6862e602 Marcos Assuncao
      if$
1356 6862e602 Marcos Assuncao
    this.to.prev.status
1357 6862e602 Marcos Assuncao
    punct.no 'this.status.punct :=
1358 6862e602 Marcos Assuncao
    space.normal 'this.status.space :=
1359 6862e602 Marcos Assuncao
    quote.no 'this.status.quote :=
1360 6862e602 Marcos Assuncao
    cap.yes  'status.cap :=
1361 6862e602 Marcos Assuncao
    }
1362 6862e602 Marcos Assuncao
  if$
1363 6862e602 Marcos Assuncao
}
1364 6862e602 Marcos Assuncao
1365 6862e602 Marcos Assuncao
1366 6862e602 Marcos Assuncao
1367 6862e602 Marcos Assuncao
%% edition/title
1368 6862e602 Marcos Assuncao
1369 6862e602 Marcos Assuncao
% Note: IEEE considers the edition to be closely associated with
1370 6862e602 Marcos Assuncao
% the title of a book. So, in IEEEtran.bst the edition is normally handled 
1371 6862e602 Marcos Assuncao
% within the formatting of the title. The format.edition function is 
1372 6862e602 Marcos Assuncao
% retained here for possible future use.
1373 6862e602 Marcos Assuncao
FUNCTION {format.edition}
1374 6862e602 Marcos Assuncao
{ edition duplicate$ empty$ 'skip$
1375 6862e602 Marcos Assuncao
    { this.to.prev.status
1376 6862e602 Marcos Assuncao
      this.status.std
1377 6862e602 Marcos Assuncao
      convert.edition
1378 6862e602 Marcos Assuncao
      status.cap
1379 6862e602 Marcos Assuncao
        { "t" }
1380 6862e602 Marcos Assuncao
        { "l" }
1381 6862e602 Marcos Assuncao
      if$ change.case$
1382 6862e602 Marcos Assuncao
      "edition" bibinfo.check
1383 6862e602 Marcos Assuncao
      "~" * bbl.edition *
1384 6862e602 Marcos Assuncao
      cap.status.std
1385 6862e602 Marcos Assuncao
    }
1386 6862e602 Marcos Assuncao
  if$
1387 6862e602 Marcos Assuncao
}
1388 6862e602 Marcos Assuncao
1389 6862e602 Marcos Assuncao
% This is used to format the booktitle of a conference proceedings.
1390 6862e602 Marcos Assuncao
% Here we use the "intype" field to provide the user a way to 
1391 6862e602 Marcos Assuncao
% override the word "in" (e.g., with things like "presented at")
1392 6862e602 Marcos Assuncao
% Use of intype stops the emphasis of the booktitle to indicate that
1393 6862e602 Marcos Assuncao
% we no longer mean the written conference proceedings, but the
1394 6862e602 Marcos Assuncao
% conference itself.
1395 6862e602 Marcos Assuncao
FUNCTION {format.in.booktitle}
1396 6862e602 Marcos Assuncao
{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
1397 6862e602 Marcos Assuncao
    { this.to.prev.status
1398 6862e602 Marcos Assuncao
      this.status.std
1399 6862e602 Marcos Assuncao
      select.language
1400 6862e602 Marcos Assuncao
      intype missing$
1401 6862e602 Marcos Assuncao
        { emphasize
1402 6862e602 Marcos Assuncao
          bbl.in " " *
1403 6862e602 Marcos Assuncao
        }
1404 6862e602 Marcos Assuncao
        { intype " " * }
1405 6862e602 Marcos Assuncao
      if$
1406 6862e602 Marcos Assuncao
      swap$ *
1407 6862e602 Marcos Assuncao
      cap.status.std
1408 6862e602 Marcos Assuncao
    }
1409 6862e602 Marcos Assuncao
  if$
1410 6862e602 Marcos Assuncao
}
1411 6862e602 Marcos Assuncao
1412 6862e602 Marcos Assuncao
% This is used to format the booktitle of collection.
1413 6862e602 Marcos Assuncao
% Here the "intype" field is not supported, but "edition" is.
1414 6862e602 Marcos Assuncao
FUNCTION {format.in.booktitle.edition}
1415 6862e602 Marcos Assuncao
{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
1416 6862e602 Marcos Assuncao
    { this.to.prev.status
1417 6862e602 Marcos Assuncao
      this.status.std
1418 6862e602 Marcos Assuncao
      select.language
1419 6862e602 Marcos Assuncao
      emphasize
1420 6862e602 Marcos Assuncao
      edition empty$ 'skip$
1421 6862e602 Marcos Assuncao
        { ", " *
1422 6862e602 Marcos Assuncao
          edition
1423 6862e602 Marcos Assuncao
          convert.edition
1424 6862e602 Marcos Assuncao
          "l" change.case$
1425 6862e602 Marcos Assuncao
          * "~" * bbl.edition *
1426 6862e602 Marcos Assuncao
        }
1427 6862e602 Marcos Assuncao
      if$
1428 6862e602 Marcos Assuncao
      bbl.in " " * swap$ *
1429 6862e602 Marcos Assuncao
      cap.status.std
1430 6862e602 Marcos Assuncao
    }
1431 6862e602 Marcos Assuncao
  if$
1432 6862e602 Marcos Assuncao
}
1433 6862e602 Marcos Assuncao
1434 6862e602 Marcos Assuncao
FUNCTION {format.article.title}
1435 6862e602 Marcos Assuncao
{ title duplicate$ empty$ 'skip$
1436 6862e602 Marcos Assuncao
    { this.to.prev.status
1437 6862e602 Marcos Assuncao
      this.status.std
1438 6862e602 Marcos Assuncao
      "t" change.case$
1439 6862e602 Marcos Assuncao
    }
1440 6862e602 Marcos Assuncao
  if$
1441 6862e602 Marcos Assuncao
  "title" bibinfo.check
1442 6862e602 Marcos Assuncao
  duplicate$ empty$ 'skip$
1443 6862e602 Marcos Assuncao
    { quote.close 'this.status.quote :=
1444 6862e602 Marcos Assuncao
      is.last.char.not.punct
1445 6862e602 Marcos Assuncao
        { punct.std 'this.status.punct := }
1446 6862e602 Marcos Assuncao
        { punct.no 'this.status.punct := }
1447 6862e602 Marcos Assuncao
      if$
1448 6862e602 Marcos Assuncao
      select.language
1449 6862e602 Marcos Assuncao
      "``" swap$ *
1450 6862e602 Marcos Assuncao
      cap.status.std
1451 6862e602 Marcos Assuncao
    }
1452 6862e602 Marcos Assuncao
  if$
1453 6862e602 Marcos Assuncao
}
1454 6862e602 Marcos Assuncao
1455 6862e602 Marcos Assuncao
FUNCTION {format.article.title.electronic}
1456 6862e602 Marcos Assuncao
{ title duplicate$ empty$ 'skip$
1457 6862e602 Marcos Assuncao
    { this.to.prev.status
1458 6862e602 Marcos Assuncao
      this.status.std
1459 6862e602 Marcos Assuncao
      cap.status.std
1460 6862e602 Marcos Assuncao
      "t" change.case$ 
1461 6862e602 Marcos Assuncao
    }
1462 6862e602 Marcos Assuncao
  if$
1463 6862e602 Marcos Assuncao
  "title" bibinfo.check
1464 6862e602 Marcos Assuncao
  duplicate$ empty$ 
1465 6862e602 Marcos Assuncao
    { skip$ } 
1466 6862e602 Marcos Assuncao
    { select.language }
1467 6862e602 Marcos Assuncao
  if$
1468 6862e602 Marcos Assuncao
}
1469 6862e602 Marcos Assuncao
1470 6862e602 Marcos Assuncao
FUNCTION {format.book.title.edition}
1471 6862e602 Marcos Assuncao
{ title "title" bibinfo.check
1472 6862e602 Marcos Assuncao
  duplicate$ empty$
1473 6862e602 Marcos Assuncao
    { "empty title in " cite$ * warning$ }
1474 6862e602 Marcos Assuncao
    { this.to.prev.status
1475 6862e602 Marcos Assuncao
      this.status.std
1476 6862e602 Marcos Assuncao
      select.language
1477 6862e602 Marcos Assuncao
      emphasize
1478 6862e602 Marcos Assuncao
      edition empty$ 'skip$
1479 6862e602 Marcos Assuncao
        { ", " *
1480 6862e602 Marcos Assuncao
          edition
1481 6862e602 Marcos Assuncao
          convert.edition
1482 6862e602 Marcos Assuncao
          status.cap
1483 6862e602 Marcos Assuncao
            { "t" }
1484 6862e602 Marcos Assuncao
            { "l" }
1485 6862e602 Marcos Assuncao
          if$
1486 6862e602 Marcos Assuncao
          change.case$
1487 6862e602 Marcos Assuncao
          * "~" * bbl.edition *
1488 6862e602 Marcos Assuncao
        }
1489 6862e602 Marcos Assuncao
      if$
1490 6862e602 Marcos Assuncao
      cap.status.std
1491 6862e602 Marcos Assuncao
    }
1492 6862e602 Marcos Assuncao
  if$
1493 6862e602 Marcos Assuncao
}
1494 6862e602 Marcos Assuncao
1495 6862e602 Marcos Assuncao
FUNCTION {format.book.title}
1496 6862e602 Marcos Assuncao
{ title "title" bibinfo.check
1497 6862e602 Marcos Assuncao
  duplicate$ empty$ 'skip$
1498 6862e602 Marcos Assuncao
    { this.to.prev.status
1499 6862e602 Marcos Assuncao
      this.status.std
1500 6862e602 Marcos Assuncao
      cap.status.std
1501 6862e602 Marcos Assuncao
      select.language
1502 6862e602 Marcos Assuncao
      emphasize
1503 6862e602 Marcos Assuncao
    }
1504 6862e602 Marcos Assuncao
  if$
1505 6862e602 Marcos Assuncao
}
1506 6862e602 Marcos Assuncao
1507 6862e602 Marcos Assuncao
1508 6862e602 Marcos Assuncao
1509 6862e602 Marcos Assuncao
%% journal
1510 6862e602 Marcos Assuncao
1511 6862e602 Marcos Assuncao
FUNCTION {format.journal}
1512 6862e602 Marcos Assuncao
{ journal duplicate$ empty$ 'skip$
1513 6862e602 Marcos Assuncao
    { this.to.prev.status
1514 6862e602 Marcos Assuncao
      this.status.std
1515 6862e602 Marcos Assuncao
      cap.status.std
1516 6862e602 Marcos Assuncao
      select.language
1517 6862e602 Marcos Assuncao
      emphasize
1518 6862e602 Marcos Assuncao
    }
1519 6862e602 Marcos Assuncao
  if$
1520 6862e602 Marcos Assuncao
}
1521 6862e602 Marcos Assuncao
1522 6862e602 Marcos Assuncao
1523 6862e602 Marcos Assuncao
1524 6862e602 Marcos Assuncao
%% how published
1525 6862e602 Marcos Assuncao
1526 6862e602 Marcos Assuncao
FUNCTION {format.howpublished}
1527 6862e602 Marcos Assuncao
{ howpublished duplicate$ empty$ 'skip$
1528 6862e602 Marcos Assuncao
    { this.to.prev.status
1529 6862e602 Marcos Assuncao
      this.status.std
1530 6862e602 Marcos Assuncao
      cap.status.std
1531 6862e602 Marcos Assuncao
    }
1532 6862e602 Marcos Assuncao
  if$
1533 6862e602 Marcos Assuncao
}
1534 6862e602 Marcos Assuncao
1535 6862e602 Marcos Assuncao
1536 6862e602 Marcos Assuncao
1537 6862e602 Marcos Assuncao
%% institutions/organization/publishers/school
1538 6862e602 Marcos Assuncao
1539 6862e602 Marcos Assuncao
FUNCTION {format.institution}
1540 6862e602 Marcos Assuncao
{ institution duplicate$ empty$ 'skip$
1541 6862e602 Marcos Assuncao
    { this.to.prev.status
1542 6862e602 Marcos Assuncao
      this.status.std
1543 6862e602 Marcos Assuncao
      cap.status.std
1544 6862e602 Marcos Assuncao
    }
1545 6862e602 Marcos Assuncao
  if$
1546 6862e602 Marcos Assuncao
}
1547 6862e602 Marcos Assuncao
1548 6862e602 Marcos Assuncao
FUNCTION {format.organization}
1549 6862e602 Marcos Assuncao
{ organization duplicate$ empty$ 'skip$
1550 6862e602 Marcos Assuncao
    { this.to.prev.status
1551 6862e602 Marcos Assuncao
      this.status.std
1552 6862e602 Marcos Assuncao
      cap.status.std
1553 6862e602 Marcos Assuncao
    }
1554 6862e602 Marcos Assuncao
  if$
1555 6862e602 Marcos Assuncao
}
1556 6862e602 Marcos Assuncao
1557 6862e602 Marcos Assuncao
FUNCTION {format.address.publisher.date}
1558 6862e602 Marcos Assuncao
{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
1559 6862e602 Marcos Assuncao
1560 6862e602 Marcos Assuncao
FUNCTION {format.address.publisher.date.nowarn}
1561 6862e602 Marcos Assuncao
{ publisher "publisher" bibinfo.check format.address.org.or.pub.date }
1562 6862e602 Marcos Assuncao
1563 6862e602 Marcos Assuncao
FUNCTION {format.address.organization.date}
1564 6862e602 Marcos Assuncao
{ organization "organization" bibinfo.check format.address.org.or.pub.date }
1565 6862e602 Marcos Assuncao
1566 6862e602 Marcos Assuncao
FUNCTION {format.school}
1567 6862e602 Marcos Assuncao
{ school duplicate$ empty$ 'skip$
1568 6862e602 Marcos Assuncao
    { this.to.prev.status
1569 6862e602 Marcos Assuncao
      this.status.std
1570 6862e602 Marcos Assuncao
      cap.status.std
1571 6862e602 Marcos Assuncao
    }
1572 6862e602 Marcos Assuncao
  if$
1573 6862e602 Marcos Assuncao
}
1574 6862e602 Marcos Assuncao
1575 6862e602 Marcos Assuncao
1576 6862e602 Marcos Assuncao
1577 6862e602 Marcos Assuncao
%% volume/number/series/chapter/pages
1578 6862e602 Marcos Assuncao
1579 6862e602 Marcos Assuncao
FUNCTION {format.volume}
1580 6862e602 Marcos Assuncao
{ volume empty.field.to.null.string
1581 6862e602 Marcos Assuncao
  duplicate$ empty$ 'skip$
1582 6862e602 Marcos Assuncao
    { this.to.prev.status
1583 6862e602 Marcos Assuncao
      this.status.std
1584 6862e602 Marcos Assuncao
      bbl.volume 
1585 6862e602 Marcos Assuncao
      status.cap
1586 6862e602 Marcos Assuncao
        { capitalize }
1587 6862e602 Marcos Assuncao
        { skip$ }
1588 6862e602 Marcos Assuncao
      if$
1589 6862e602 Marcos Assuncao
      swap$ tie.or.space.prefix
1590 6862e602 Marcos Assuncao
      "volume" bibinfo.check
1591 6862e602 Marcos Assuncao
      * *
1592 6862e602 Marcos Assuncao
      cap.status.std
1593 6862e602 Marcos Assuncao
    }
1594 6862e602 Marcos Assuncao
  if$
1595 6862e602 Marcos Assuncao
}
1596 6862e602 Marcos Assuncao
1597 6862e602 Marcos Assuncao
FUNCTION {format.number}
1598 6862e602 Marcos Assuncao
{ number empty.field.to.null.string
1599 6862e602 Marcos Assuncao
  duplicate$ empty$ 'skip$
1600 6862e602 Marcos Assuncao
    { this.to.prev.status
1601 6862e602 Marcos Assuncao
      this.status.std
1602 6862e602 Marcos Assuncao
      status.cap
1603 6862e602 Marcos Assuncao
         { bbl.number capitalize }
1604 6862e602 Marcos Assuncao
         { bbl.number }
1605 6862e602 Marcos Assuncao
       if$
1606 6862e602 Marcos Assuncao
      swap$ tie.or.space.prefix
1607 6862e602 Marcos Assuncao
      "number" bibinfo.check
1608 6862e602 Marcos Assuncao
      * *
1609 6862e602 Marcos Assuncao
      cap.status.std
1610 6862e602 Marcos Assuncao
    }
1611 6862e602 Marcos Assuncao
  if$
1612 6862e602 Marcos Assuncao
}
1613 6862e602 Marcos Assuncao
1614 6862e602 Marcos Assuncao
FUNCTION {format.number.if.use.for.article}
1615 6862e602 Marcos Assuncao
{ is.use.number.for.article 
1616 6862e602 Marcos Assuncao
     { format.number }
1617 6862e602 Marcos Assuncao
     { "" }
1618 6862e602 Marcos Assuncao
   if$
1619 6862e602 Marcos Assuncao
}
1620 6862e602 Marcos Assuncao
1621 6862e602 Marcos Assuncao
% IEEE does not seem to tie the series so closely with the volume
1622 6862e602 Marcos Assuncao
% and number as is done in other bibliography styles. Instead the
1623 6862e602 Marcos Assuncao
% series is treated somewhat like an extension of the title.
1624 6862e602 Marcos Assuncao
FUNCTION {format.series}
1625 6862e602 Marcos Assuncao
{ series empty$ 
1626 6862e602 Marcos Assuncao
   { "" }
1627 6862e602 Marcos Assuncao
   { this.to.prev.status
1628 6862e602 Marcos Assuncao
     this.status.std
1629 6862e602 Marcos Assuncao
     bbl.series " " *
1630 6862e602 Marcos Assuncao
     series "series" bibinfo.check *
1631 6862e602 Marcos Assuncao
     cap.status.std
1632 6862e602 Marcos Assuncao
   }
1633 6862e602 Marcos Assuncao
 if$
1634 6862e602 Marcos Assuncao
}
1635 6862e602 Marcos Assuncao
1636 6862e602 Marcos Assuncao
1637 6862e602 Marcos Assuncao
FUNCTION {format.chapter}
1638 6862e602 Marcos Assuncao
{ chapter empty$
1639 6862e602 Marcos Assuncao
    { "" }
1640 6862e602 Marcos Assuncao
    { this.to.prev.status
1641 6862e602 Marcos Assuncao
      this.status.std
1642 6862e602 Marcos Assuncao
      type empty$
1643 6862e602 Marcos Assuncao
        { bbl.chapter }
1644 6862e602 Marcos Assuncao
        { type "l" change.case$
1645 6862e602 Marcos Assuncao
          "type" bibinfo.check
1646 6862e602 Marcos Assuncao
        }
1647 6862e602 Marcos Assuncao
      if$
1648 6862e602 Marcos Assuncao
      chapter tie.or.space.prefix
1649 6862e602 Marcos Assuncao
      "chapter" bibinfo.check
1650 6862e602 Marcos Assuncao
      * *
1651 6862e602 Marcos Assuncao
      cap.status.std
1652 6862e602 Marcos Assuncao
    }
1653 6862e602 Marcos Assuncao
  if$
1654 6862e602 Marcos Assuncao
}
1655 6862e602 Marcos Assuncao
1656 6862e602 Marcos Assuncao
1657 6862e602 Marcos Assuncao
% The intended use of format.paper is for paper numbers of inproceedings.
1658 6862e602 Marcos Assuncao
% The paper type can be overridden via the type field.
1659 6862e602 Marcos Assuncao
% We allow the type to be displayed even if the paper number is absent
1660 6862e602 Marcos Assuncao
% for things like "postdeadline paper"
1661 6862e602 Marcos Assuncao
FUNCTION {format.paper}
1662 6862e602 Marcos Assuncao
{ is.use.paper
1663 6862e602 Marcos Assuncao
     { paper empty$
1664 6862e602 Marcos Assuncao
        { type empty$
1665 6862e602 Marcos Assuncao
            { "" }
1666 6862e602 Marcos Assuncao
            { this.to.prev.status
1667 6862e602 Marcos Assuncao
              this.status.std
1668 6862e602 Marcos Assuncao
              type "type" bibinfo.check
1669 6862e602 Marcos Assuncao
              cap.status.std
1670 6862e602 Marcos Assuncao
            }
1671 6862e602 Marcos Assuncao
          if$
1672 6862e602 Marcos Assuncao
        }
1673 6862e602 Marcos Assuncao
        { this.to.prev.status
1674 6862e602 Marcos Assuncao
          this.status.std
1675 6862e602 Marcos Assuncao
          type empty$
1676 6862e602 Marcos Assuncao
            { bbl.paper }
1677 6862e602 Marcos Assuncao
            { type "type" bibinfo.check }
1678 6862e602 Marcos Assuncao
          if$
1679 6862e602 Marcos Assuncao
          " " * paper
1680 6862e602 Marcos Assuncao
          "paper" bibinfo.check
1681 6862e602 Marcos Assuncao
          *
1682 6862e602 Marcos Assuncao
          cap.status.std
1683 6862e602 Marcos Assuncao
        }
1684 6862e602 Marcos Assuncao
      if$
1685 6862e602 Marcos Assuncao
     }
1686 6862e602 Marcos Assuncao
     { "" } 
1687 6862e602 Marcos Assuncao
   if$
1688 6862e602 Marcos Assuncao
}
1689 6862e602 Marcos Assuncao
1690 6862e602 Marcos Assuncao
1691 6862e602 Marcos Assuncao
FUNCTION {format.pages}
1692 6862e602 Marcos Assuncao
{ pages duplicate$ empty$ 'skip$
1693 6862e602 Marcos Assuncao
    { this.to.prev.status
1694 6862e602 Marcos Assuncao
      this.status.std
1695 6862e602 Marcos Assuncao
      duplicate$ is.multiple.pages
1696 6862e602 Marcos Assuncao
        {
1697 6862e602 Marcos Assuncao
          bbl.pages swap$
1698 6862e602 Marcos Assuncao
          n.dashify
1699 6862e602 Marcos Assuncao
        }
1700 6862e602 Marcos Assuncao
        {
1701 6862e602 Marcos Assuncao
          bbl.page swap$
1702 6862e602 Marcos Assuncao
        }
1703 6862e602 Marcos Assuncao
      if$
1704 6862e602 Marcos Assuncao
      tie.or.space.prefix
1705 6862e602 Marcos Assuncao
      "pages" bibinfo.check
1706 6862e602 Marcos Assuncao
      * *
1707 6862e602 Marcos Assuncao
      cap.status.std
1708 6862e602 Marcos Assuncao
    }
1709 6862e602 Marcos Assuncao
  if$
1710 6862e602 Marcos Assuncao
}
1711 6862e602 Marcos Assuncao
1712 6862e602 Marcos Assuncao
1713 6862e602 Marcos Assuncao
1714 6862e602 Marcos Assuncao
%% technical report number
1715 6862e602 Marcos Assuncao
1716 6862e602 Marcos Assuncao
FUNCTION {format.tech.report.number}
1717 6862e602 Marcos Assuncao
{ number "number" bibinfo.check
1718 6862e602 Marcos Assuncao
  this.to.prev.status
1719 6862e602 Marcos Assuncao
  this.status.std
1720 6862e602 Marcos Assuncao
  cap.status.std
1721 6862e602 Marcos Assuncao
  type duplicate$ empty$
1722 6862e602 Marcos Assuncao
    { pop$ 
1723 6862e602 Marcos Assuncao
      bbl.techrep
1724 6862e602 Marcos Assuncao
    }
1725 6862e602 Marcos Assuncao
    { skip$ }
1726 6862e602 Marcos Assuncao
  if$
1727 6862e602 Marcos Assuncao
  "type" bibinfo.check 
1728 6862e602 Marcos Assuncao
  swap$ duplicate$ empty$
1729 6862e602 Marcos Assuncao
    { pop$ }
1730 6862e602 Marcos Assuncao
    { tie.or.space.prefix * * }
1731 6862e602 Marcos Assuncao
  if$
1732 6862e602 Marcos Assuncao
}
1733 6862e602 Marcos Assuncao
1734 6862e602 Marcos Assuncao
1735 6862e602 Marcos Assuncao
1736 6862e602 Marcos Assuncao
%% note
1737 6862e602 Marcos Assuncao
1738 6862e602 Marcos Assuncao
FUNCTION {format.note}
1739 6862e602 Marcos Assuncao
{ note empty$
1740 6862e602 Marcos Assuncao
    { "" }
1741 6862e602 Marcos Assuncao
    { this.to.prev.status
1742 6862e602 Marcos Assuncao
      this.status.std
1743 6862e602 Marcos Assuncao
      punct.period 'this.status.punct :=
1744 6862e602 Marcos Assuncao
      note #1 #1 substring$
1745 6862e602 Marcos Assuncao
      duplicate$ "{" =
1746 6862e602 Marcos Assuncao
        { skip$ }
1747 6862e602 Marcos Assuncao
        { status.cap
1748 6862e602 Marcos Assuncao
          { "u" }
1749 6862e602 Marcos Assuncao
          { "l" }
1750 6862e602 Marcos Assuncao
        if$
1751 6862e602 Marcos Assuncao
        change.case$
1752 6862e602 Marcos Assuncao
        }
1753 6862e602 Marcos Assuncao
      if$
1754 6862e602 Marcos Assuncao
      note #2 global.max$ substring$ * "note" bibinfo.check
1755 6862e602 Marcos Assuncao
      cap.yes  'status.cap :=
1756 6862e602 Marcos Assuncao
    }
1757 6862e602 Marcos Assuncao
  if$
1758 6862e602 Marcos Assuncao
}
1759 6862e602 Marcos Assuncao
1760 6862e602 Marcos Assuncao
1761 6862e602 Marcos Assuncao
1762 6862e602 Marcos Assuncao
%% patent
1763 6862e602 Marcos Assuncao
1764 6862e602 Marcos Assuncao
FUNCTION {format.patent.date}
1765 6862e602 Marcos Assuncao
{ this.to.prev.status
1766 6862e602 Marcos Assuncao
  this.status.std
1767 6862e602 Marcos Assuncao
  year empty$
1768 6862e602 Marcos Assuncao
    { monthfiled duplicate$ empty$
1769 6862e602 Marcos Assuncao
        { "monthfiled" bibinfo.check pop$ "" }
1770 6862e602 Marcos Assuncao
        { "monthfiled" bibinfo.check }
1771 6862e602 Marcos Assuncao
      if$
1772 6862e602 Marcos Assuncao
      dayfiled duplicate$ empty$
1773 6862e602 Marcos Assuncao
        { "dayfiled" bibinfo.check pop$ "" * }
1774 6862e602 Marcos Assuncao
        { "dayfiled" bibinfo.check 
1775 6862e602 Marcos Assuncao
          monthfiled empty$ 
1776 6862e602 Marcos Assuncao
             { "dayfiled without a monthfiled in " cite$ * warning$
1777 6862e602 Marcos Assuncao
               * 
1778 6862e602 Marcos Assuncao
             }
1779 6862e602 Marcos Assuncao
             { " " swap$ * * }
1780 6862e602 Marcos Assuncao
           if$
1781 6862e602 Marcos Assuncao
        }
1782 6862e602 Marcos Assuncao
      if$
1783 6862e602 Marcos Assuncao
      yearfiled empty$
1784 6862e602 Marcos Assuncao
        { "no year or yearfiled in " cite$ * warning$ }
1785 6862e602 Marcos Assuncao
        { yearfiled "yearfiled" bibinfo.check 
1786 6862e602 Marcos Assuncao
          swap$
1787 6862e602 Marcos Assuncao
          duplicate$ empty$
1788 6862e602 Marcos Assuncao
             { pop$ }
1789 6862e602 Marcos Assuncao
             { ", " * swap$ * }
1790 6862e602 Marcos Assuncao
           if$
1791 6862e602 Marcos Assuncao
        }
1792 6862e602 Marcos Assuncao
      if$
1793 6862e602 Marcos Assuncao
    }
1794 6862e602 Marcos Assuncao
    { month duplicate$ empty$
1795 6862e602 Marcos Assuncao
        { "month" bibinfo.check pop$ "" }
1796 6862e602 Marcos Assuncao
        { "month" bibinfo.check }
1797 6862e602 Marcos Assuncao
      if$
1798 6862e602 Marcos Assuncao
      day duplicate$ empty$
1799 6862e602 Marcos Assuncao
        { "day" bibinfo.check pop$ "" * }
1800 6862e602 Marcos Assuncao
        { "day" bibinfo.check 
1801 6862e602 Marcos Assuncao
          month empty$ 
1802 6862e602 Marcos Assuncao
             { "day without a month in " cite$ * warning$
1803 6862e602 Marcos Assuncao
               * 
1804 6862e602 Marcos Assuncao
             }
1805 6862e602 Marcos Assuncao
             { " " swap$ * * }
1806 6862e602 Marcos Assuncao
           if$
1807 6862e602 Marcos Assuncao
        }
1808 6862e602 Marcos Assuncao
      if$
1809 6862e602 Marcos Assuncao
      year "year" bibinfo.check 
1810 6862e602 Marcos Assuncao
      swap$
1811 6862e602 Marcos Assuncao
      duplicate$ empty$
1812 6862e602 Marcos Assuncao
        { pop$ }
1813 6862e602 Marcos Assuncao
        { ", " * swap$ * }
1814 6862e602 Marcos Assuncao
      if$
1815 6862e602 Marcos Assuncao
    }
1816 6862e602 Marcos Assuncao
  if$
1817 6862e602 Marcos Assuncao
  cap.status.std
1818 6862e602 Marcos Assuncao
}
1819 6862e602 Marcos Assuncao
1820 6862e602 Marcos Assuncao
FUNCTION {format.patent.nationality.type.number}
1821 6862e602 Marcos Assuncao
{ this.to.prev.status
1822 6862e602 Marcos Assuncao
  this.status.std
1823 6862e602 Marcos Assuncao
  nationality duplicate$ empty$
1824 6862e602 Marcos Assuncao
    { "nationality" bibinfo.warn pop$ "" }
1825 6862e602 Marcos Assuncao
    { "nationality" bibinfo.check
1826 6862e602 Marcos Assuncao
      duplicate$ "l" change.case$ "united states" =
1827 6862e602 Marcos Assuncao
        { pop$ bbl.patentUS }
1828 6862e602 Marcos Assuncao
        { skip$ }
1829 6862e602 Marcos Assuncao
      if$
1830 6862e602 Marcos Assuncao
      " " *
1831 6862e602 Marcos Assuncao
    }
1832 6862e602 Marcos Assuncao
  if$
1833 6862e602 Marcos Assuncao
  type empty$
1834 6862e602 Marcos Assuncao
    { bbl.patent "type" bibinfo.check }
1835 6862e602 Marcos Assuncao
    { type "type" bibinfo.check }
1836 6862e602 Marcos Assuncao
  if$  
1837 6862e602 Marcos Assuncao
  *
1838 6862e602 Marcos Assuncao
  number duplicate$ empty$
1839 6862e602 Marcos Assuncao
    { "number" bibinfo.warn pop$ }
1840 6862e602 Marcos Assuncao
    { "number" bibinfo.check
1841 6862e602 Marcos Assuncao
      large.number.separate
1842 6862e602 Marcos Assuncao
      swap$ " " * swap$ *
1843 6862e602 Marcos Assuncao
    }
1844 6862e602 Marcos Assuncao
  if$ 
1845 6862e602 Marcos Assuncao
  cap.status.std
1846 6862e602 Marcos Assuncao
}
1847 6862e602 Marcos Assuncao
1848 6862e602 Marcos Assuncao
1849 6862e602 Marcos Assuncao
1850 6862e602 Marcos Assuncao
%% standard
1851 6862e602 Marcos Assuncao
1852 6862e602 Marcos Assuncao
FUNCTION {format.organization.institution.standard.type.number}
1853 6862e602 Marcos Assuncao
{ this.to.prev.status
1854 6862e602 Marcos Assuncao
  this.status.std
1855 6862e602 Marcos Assuncao
  organization duplicate$ empty$
1856 6862e602 Marcos Assuncao
    { pop$ 
1857 6862e602 Marcos Assuncao
      institution duplicate$ empty$
1858 6862e602 Marcos Assuncao
        { "institution" bibinfo.warn }
1859 6862e602 Marcos Assuncao
        { "institution" bibinfo.warn " " * }
1860 6862e602 Marcos Assuncao
      if$
1861 6862e602 Marcos Assuncao
    }
1862 6862e602 Marcos Assuncao
    { "organization" bibinfo.warn " " * }
1863 6862e602 Marcos Assuncao
  if$
1864 6862e602 Marcos Assuncao
  type empty$
1865 6862e602 Marcos Assuncao
    { bbl.standard "type" bibinfo.check }
1866 6862e602 Marcos Assuncao
    { type "type" bibinfo.check }
1867 6862e602 Marcos Assuncao
  if$  
1868 6862e602 Marcos Assuncao
  *
1869 6862e602 Marcos Assuncao
  number duplicate$ empty$
1870 6862e602 Marcos Assuncao
    { "number" bibinfo.check pop$ }
1871 6862e602 Marcos Assuncao
    { "number" bibinfo.check
1872 6862e602 Marcos Assuncao
      large.number.separate
1873 6862e602 Marcos Assuncao
      swap$ " " * swap$ *
1874 6862e602 Marcos Assuncao
    }
1875 6862e602 Marcos Assuncao
  if$ 
1876 6862e602 Marcos Assuncao
  cap.status.std
1877 6862e602 Marcos Assuncao
}
1878 6862e602 Marcos Assuncao
1879 6862e602 Marcos Assuncao
FUNCTION {format.revision}
1880 6862e602 Marcos Assuncao
{ revision empty$
1881 6862e602 Marcos Assuncao
    { "" }
1882 6862e602 Marcos Assuncao
    { this.to.prev.status
1883 6862e602 Marcos Assuncao
      this.status.std
1884 6862e602 Marcos Assuncao
      bbl.revision
1885 6862e602 Marcos Assuncao
      revision tie.or.space.prefix
1886 6862e602 Marcos Assuncao
      "revision" bibinfo.check
1887 6862e602 Marcos Assuncao
      * *
1888 6862e602 Marcos Assuncao
      cap.status.std
1889 6862e602 Marcos Assuncao
    }
1890 6862e602 Marcos Assuncao
  if$
1891 6862e602 Marcos Assuncao
}
1892 6862e602 Marcos Assuncao
1893 6862e602 Marcos Assuncao
1894 6862e602 Marcos Assuncao
%% thesis
1895 6862e602 Marcos Assuncao
1896 6862e602 Marcos Assuncao
FUNCTION {format.master.thesis.type}
1897 6862e602 Marcos Assuncao
{ this.to.prev.status
1898 6862e602 Marcos Assuncao
  this.status.std
1899 6862e602 Marcos Assuncao
  type empty$
1900 6862e602 Marcos Assuncao
    {
1901 6862e602 Marcos Assuncao
      bbl.mthesis
1902 6862e602 Marcos Assuncao
    }
1903 6862e602 Marcos Assuncao
    { 
1904 6862e602 Marcos Assuncao
      type "type" bibinfo.check
1905 6862e602 Marcos Assuncao
    }
1906 6862e602 Marcos Assuncao
  if$
1907 6862e602 Marcos Assuncao
cap.status.std
1908 6862e602 Marcos Assuncao
}
1909 6862e602 Marcos Assuncao
1910 6862e602 Marcos Assuncao
FUNCTION {format.phd.thesis.type}
1911 6862e602 Marcos Assuncao
{ this.to.prev.status
1912 6862e602 Marcos Assuncao
  this.status.std
1913 6862e602 Marcos Assuncao
  type empty$
1914 6862e602 Marcos Assuncao
    {
1915 6862e602 Marcos Assuncao
      bbl.phdthesis
1916 6862e602 Marcos Assuncao
    }
1917 6862e602 Marcos Assuncao
    { 
1918 6862e602 Marcos Assuncao
      type "type" bibinfo.check
1919 6862e602 Marcos Assuncao
    }
1920 6862e602 Marcos Assuncao
  if$
1921 6862e602 Marcos Assuncao
cap.status.std
1922 6862e602 Marcos Assuncao
}
1923 6862e602 Marcos Assuncao
1924 6862e602 Marcos Assuncao
1925 6862e602 Marcos Assuncao
1926 6862e602 Marcos Assuncao
%% URL
1927 6862e602 Marcos Assuncao
1928 6862e602 Marcos Assuncao
FUNCTION {format.url}
1929 6862e602 Marcos Assuncao
{ url empty$
1930 6862e602 Marcos Assuncao
    { "" }
1931 6862e602 Marcos Assuncao
    { this.to.prev.status
1932 6862e602 Marcos Assuncao
      this.status.std
1933 6862e602 Marcos Assuncao
      cap.yes 'status.cap :=
1934 6862e602 Marcos Assuncao
      name.url.prefix " " *
1935 6862e602 Marcos Assuncao
      "\url{" * url * "}" *
1936 6862e602 Marcos Assuncao
      punct.no 'this.status.punct :=
1937 6862e602 Marcos Assuncao
      punct.period 'prev.status.punct :=
1938 6862e602 Marcos Assuncao
      space.normal 'this.status.space :=
1939 6862e602 Marcos Assuncao
      space.normal 'prev.status.space :=
1940 6862e602 Marcos Assuncao
      quote.no 'this.status.quote :=
1941 6862e602 Marcos Assuncao
    }
1942 6862e602 Marcos Assuncao
  if$
1943 6862e602 Marcos Assuncao
}
1944 6862e602 Marcos Assuncao
1945 6862e602 Marcos Assuncao
1946 6862e602 Marcos Assuncao
1947 6862e602 Marcos Assuncao
1948 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%
1949 6862e602 Marcos Assuncao
%% ENTRY HANDLERS %%
1950 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%%
1951 6862e602 Marcos Assuncao
1952 6862e602 Marcos Assuncao
1953 6862e602 Marcos Assuncao
% Note: In many journals, IEEE (or the authors) tend not to show the number
1954 6862e602 Marcos Assuncao
% for articles, so the display of the number is controlled here by the
1955 6862e602 Marcos Assuncao
% switch "is.use.number.for.article"
1956 6862e602 Marcos Assuncao
FUNCTION {article}
1957 6862e602 Marcos Assuncao
{ std.status.using.comma
1958 6862e602 Marcos Assuncao
  start.entry
1959 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
1960 6862e602 Marcos Assuncao
  format.authors "author" output.warn
1961 6862e602 Marcos Assuncao
  name.or.dash
1962 6862e602 Marcos Assuncao
  format.article.title "title" output.warn
1963 6862e602 Marcos Assuncao
  format.journal "journal" bibinfo.check "journal" output.warn
1964 6862e602 Marcos Assuncao
  format.volume output
1965 6862e602 Marcos Assuncao
  format.number.if.use.for.article output
1966 6862e602 Marcos Assuncao
  format.pages output
1967 6862e602 Marcos Assuncao
  format.date "year" output.warn
1968 6862e602 Marcos Assuncao
  format.note output
1969 6862e602 Marcos Assuncao
  format.url output
1970 6862e602 Marcos Assuncao
  fin.entry
1971 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
1972 6862e602 Marcos Assuncao
}
1973 6862e602 Marcos Assuncao
1974 6862e602 Marcos Assuncao
FUNCTION {book}
1975 6862e602 Marcos Assuncao
{ std.status.using.comma
1976 6862e602 Marcos Assuncao
  start.entry
1977 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
1978 6862e602 Marcos Assuncao
  author empty$
1979 6862e602 Marcos Assuncao
    { format.editors "author and editor" output.warn }
1980 6862e602 Marcos Assuncao
    { format.authors output.nonnull }
1981 6862e602 Marcos Assuncao
  if$
1982 6862e602 Marcos Assuncao
  name.or.dash
1983 6862e602 Marcos Assuncao
  format.book.title.edition output
1984 6862e602 Marcos Assuncao
  format.series output
1985 6862e602 Marcos Assuncao
  author empty$
1986 6862e602 Marcos Assuncao
    { skip$ }
1987 6862e602 Marcos Assuncao
    { format.editors output }
1988 6862e602 Marcos Assuncao
  if$
1989 6862e602 Marcos Assuncao
  format.address.publisher.date output
1990 6862e602 Marcos Assuncao
  format.volume output
1991 6862e602 Marcos Assuncao
  format.number output
1992 6862e602 Marcos Assuncao
  format.note output
1993 6862e602 Marcos Assuncao
  format.url output
1994 6862e602 Marcos Assuncao
  fin.entry
1995 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
1996 6862e602 Marcos Assuncao
}
1997 6862e602 Marcos Assuncao
1998 6862e602 Marcos Assuncao
FUNCTION {booklet}
1999 6862e602 Marcos Assuncao
{ std.status.using.comma
2000 6862e602 Marcos Assuncao
  start.entry
2001 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2002 6862e602 Marcos Assuncao
  format.authors output
2003 6862e602 Marcos Assuncao
  name.or.dash
2004 6862e602 Marcos Assuncao
  format.article.title "title" output.warn
2005 6862e602 Marcos Assuncao
  format.howpublished "howpublished" bibinfo.check output
2006 6862e602 Marcos Assuncao
  format.organization "organization" bibinfo.check output
2007 6862e602 Marcos Assuncao
  format.address "address" bibinfo.check output
2008 6862e602 Marcos Assuncao
  format.date output
2009 6862e602 Marcos Assuncao
  format.note output
2010 6862e602 Marcos Assuncao
  format.url output
2011 6862e602 Marcos Assuncao
  fin.entry
2012 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2013 6862e602 Marcos Assuncao
}
2014 6862e602 Marcos Assuncao
2015 6862e602 Marcos Assuncao
FUNCTION {electronic}
2016 6862e602 Marcos Assuncao
{ std.status.using.period
2017 6862e602 Marcos Assuncao
  start.entry
2018 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2019 6862e602 Marcos Assuncao
  format.authors output
2020 6862e602 Marcos Assuncao
  name.or.dash
2021 6862e602 Marcos Assuncao
  format.date.electronic output
2022 6862e602 Marcos Assuncao
  format.article.title.electronic output
2023 6862e602 Marcos Assuncao
  format.howpublished "howpublished" bibinfo.check output
2024 6862e602 Marcos Assuncao
  format.organization "organization" bibinfo.check output
2025 6862e602 Marcos Assuncao
  format.address "address" bibinfo.check output
2026 6862e602 Marcos Assuncao
  format.note output
2027 6862e602 Marcos Assuncao
  format.url output
2028 6862e602 Marcos Assuncao
  fin.entry
2029 6862e602 Marcos Assuncao
  empty.entry.warn
2030 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2031 6862e602 Marcos Assuncao
}
2032 6862e602 Marcos Assuncao
2033 6862e602 Marcos Assuncao
FUNCTION {inbook}
2034 6862e602 Marcos Assuncao
{ std.status.using.comma
2035 6862e602 Marcos Assuncao
  start.entry
2036 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2037 6862e602 Marcos Assuncao
  author empty$
2038 6862e602 Marcos Assuncao
    { format.editors "author and editor" output.warn }
2039 6862e602 Marcos Assuncao
    { format.authors output.nonnull }
2040 6862e602 Marcos Assuncao
  if$
2041 6862e602 Marcos Assuncao
  name.or.dash
2042 6862e602 Marcos Assuncao
  format.book.title.edition output
2043 6862e602 Marcos Assuncao
  format.series output
2044 6862e602 Marcos Assuncao
  format.address.publisher.date output
2045 6862e602 Marcos Assuncao
  format.volume output
2046 6862e602 Marcos Assuncao
  format.number output
2047 6862e602 Marcos Assuncao
  format.chapter output
2048 6862e602 Marcos Assuncao
  format.pages output
2049 6862e602 Marcos Assuncao
  format.note output
2050 6862e602 Marcos Assuncao
  format.url output
2051 6862e602 Marcos Assuncao
  fin.entry
2052 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2053 6862e602 Marcos Assuncao
}
2054 6862e602 Marcos Assuncao
2055 6862e602 Marcos Assuncao
FUNCTION {incollection}
2056 6862e602 Marcos Assuncao
{ std.status.using.comma
2057 6862e602 Marcos Assuncao
  start.entry
2058 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2059 6862e602 Marcos Assuncao
  format.authors "author" output.warn
2060 6862e602 Marcos Assuncao
  name.or.dash
2061 6862e602 Marcos Assuncao
  format.article.title "title" output.warn
2062 6862e602 Marcos Assuncao
  format.in.booktitle.edition "booktitle" output.warn
2063 6862e602 Marcos Assuncao
  format.series output
2064 6862e602 Marcos Assuncao
  format.editors output
2065 6862e602 Marcos Assuncao
  format.address.publisher.date.nowarn output
2066 6862e602 Marcos Assuncao
  format.volume output
2067 6862e602 Marcos Assuncao
  format.number output
2068 6862e602 Marcos Assuncao
  format.chapter output
2069 6862e602 Marcos Assuncao
  format.pages output
2070 6862e602 Marcos Assuncao
  format.note output
2071 6862e602 Marcos Assuncao
  format.url output
2072 6862e602 Marcos Assuncao
  fin.entry
2073 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2074 6862e602 Marcos Assuncao
}
2075 6862e602 Marcos Assuncao
2076 6862e602 Marcos Assuncao
FUNCTION {inproceedings}
2077 6862e602 Marcos Assuncao
{ std.status.using.comma
2078 6862e602 Marcos Assuncao
  start.entry
2079 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2080 6862e602 Marcos Assuncao
  format.authors "author" output.warn
2081 6862e602 Marcos Assuncao
  name.or.dash
2082 6862e602 Marcos Assuncao
  format.article.title "title" output.warn
2083 6862e602 Marcos Assuncao
  format.in.booktitle "booktitle" output.warn
2084 6862e602 Marcos Assuncao
  format.series output
2085 6862e602 Marcos Assuncao
  format.editors output
2086 6862e602 Marcos Assuncao
  format.volume output
2087 6862e602 Marcos Assuncao
  format.number output
2088 6862e602 Marcos Assuncao
  publisher empty$
2089 6862e602 Marcos Assuncao
    { format.address.organization.date output }
2090 6862e602 Marcos Assuncao
    { format.organization "organization" bibinfo.check output
2091 6862e602 Marcos Assuncao
      format.address.publisher.date output
2092 6862e602 Marcos Assuncao
    }
2093 6862e602 Marcos Assuncao
  if$
2094 6862e602 Marcos Assuncao
  format.paper output
2095 6862e602 Marcos Assuncao
  format.pages output
2096 6862e602 Marcos Assuncao
  format.note output
2097 6862e602 Marcos Assuncao
  format.url output
2098 6862e602 Marcos Assuncao
  fin.entry
2099 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2100 6862e602 Marcos Assuncao
}
2101 6862e602 Marcos Assuncao
2102 6862e602 Marcos Assuncao
FUNCTION {manual}
2103 6862e602 Marcos Assuncao
{ std.status.using.comma
2104 6862e602 Marcos Assuncao
  start.entry
2105 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2106 6862e602 Marcos Assuncao
  format.authors output
2107 6862e602 Marcos Assuncao
  name.or.dash
2108 6862e602 Marcos Assuncao
  format.book.title.edition "title" output.warn
2109 6862e602 Marcos Assuncao
  format.howpublished "howpublished" bibinfo.check output 
2110 6862e602 Marcos Assuncao
  format.organization "organization" bibinfo.check output
2111 6862e602 Marcos Assuncao
  format.address "address" bibinfo.check output
2112 6862e602 Marcos Assuncao
  format.date output
2113 6862e602 Marcos Assuncao
  format.note output
2114 6862e602 Marcos Assuncao
  format.url output
2115 6862e602 Marcos Assuncao
  fin.entry
2116 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2117 6862e602 Marcos Assuncao
}
2118 6862e602 Marcos Assuncao
2119 6862e602 Marcos Assuncao
FUNCTION {mastersthesis}
2120 6862e602 Marcos Assuncao
{ std.status.using.comma
2121 6862e602 Marcos Assuncao
  start.entry
2122 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2123 6862e602 Marcos Assuncao
  format.authors "author" output.warn
2124 6862e602 Marcos Assuncao
  name.or.dash
2125 6862e602 Marcos Assuncao
  format.article.title "title" output.warn
2126 6862e602 Marcos Assuncao
  format.master.thesis.type output.nonnull
2127 6862e602 Marcos Assuncao
  format.school "school" bibinfo.warn output
2128 6862e602 Marcos Assuncao
  format.address "address" bibinfo.check output
2129 6862e602 Marcos Assuncao
  format.date "year" output.warn
2130 6862e602 Marcos Assuncao
  format.note output
2131 6862e602 Marcos Assuncao
  format.url output
2132 6862e602 Marcos Assuncao
  fin.entry
2133 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2134 6862e602 Marcos Assuncao
}
2135 6862e602 Marcos Assuncao
2136 6862e602 Marcos Assuncao
FUNCTION {misc}
2137 6862e602 Marcos Assuncao
{ std.status.using.comma
2138 6862e602 Marcos Assuncao
  start.entry
2139 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2140 6862e602 Marcos Assuncao
  format.authors output
2141 6862e602 Marcos Assuncao
  name.or.dash
2142 6862e602 Marcos Assuncao
  format.article.title output
2143 6862e602 Marcos Assuncao
  format.howpublished "howpublished" bibinfo.check output 
2144 6862e602 Marcos Assuncao
  format.organization "organization" bibinfo.check output
2145 6862e602 Marcos Assuncao
  format.address "address" bibinfo.check output
2146 6862e602 Marcos Assuncao
  format.pages output
2147 6862e602 Marcos Assuncao
  format.date output
2148 6862e602 Marcos Assuncao
  format.note output
2149 6862e602 Marcos Assuncao
  format.url output
2150 6862e602 Marcos Assuncao
  fin.entry
2151 6862e602 Marcos Assuncao
  empty.entry.warn
2152 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2153 6862e602 Marcos Assuncao
}
2154 6862e602 Marcos Assuncao
2155 6862e602 Marcos Assuncao
FUNCTION {patent}
2156 6862e602 Marcos Assuncao
{ std.status.using.comma
2157 6862e602 Marcos Assuncao
  start.entry
2158 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2159 6862e602 Marcos Assuncao
  format.authors output
2160 6862e602 Marcos Assuncao
  name.or.dash
2161 6862e602 Marcos Assuncao
  format.article.title output
2162 6862e602 Marcos Assuncao
  format.patent.nationality.type.number output
2163 6862e602 Marcos Assuncao
  format.patent.date output
2164 6862e602 Marcos Assuncao
  format.note output
2165 6862e602 Marcos Assuncao
  format.url output
2166 6862e602 Marcos Assuncao
  fin.entry
2167 6862e602 Marcos Assuncao
  empty.entry.warn
2168 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2169 6862e602 Marcos Assuncao
}
2170 6862e602 Marcos Assuncao
2171 6862e602 Marcos Assuncao
FUNCTION {periodical}
2172 6862e602 Marcos Assuncao
{ std.status.using.comma
2173 6862e602 Marcos Assuncao
  start.entry
2174 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2175 6862e602 Marcos Assuncao
  format.editors output
2176 6862e602 Marcos Assuncao
  name.or.dash
2177 6862e602 Marcos Assuncao
  format.book.title "title" output.warn
2178 6862e602 Marcos Assuncao
  format.series output
2179 6862e602 Marcos Assuncao
  format.volume output
2180 6862e602 Marcos Assuncao
  format.number output
2181 6862e602 Marcos Assuncao
  format.organization "organization" bibinfo.check output
2182 6862e602 Marcos Assuncao
  format.date "year" output.warn
2183 6862e602 Marcos Assuncao
  format.note output
2184 6862e602 Marcos Assuncao
  format.url output
2185 6862e602 Marcos Assuncao
  fin.entry
2186 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2187 6862e602 Marcos Assuncao
}
2188 6862e602 Marcos Assuncao
2189 6862e602 Marcos Assuncao
FUNCTION {phdthesis}
2190 6862e602 Marcos Assuncao
{ std.status.using.comma
2191 6862e602 Marcos Assuncao
  start.entry
2192 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2193 6862e602 Marcos Assuncao
  format.authors "author" output.warn
2194 6862e602 Marcos Assuncao
  name.or.dash
2195 6862e602 Marcos Assuncao
  format.article.title "title" output.warn
2196 6862e602 Marcos Assuncao
  format.phd.thesis.type output.nonnull
2197 6862e602 Marcos Assuncao
  format.school "school" bibinfo.warn output
2198 6862e602 Marcos Assuncao
  format.address "address" bibinfo.check output
2199 6862e602 Marcos Assuncao
  format.date "year" output.warn
2200 6862e602 Marcos Assuncao
  format.note output
2201 6862e602 Marcos Assuncao
  format.url output
2202 6862e602 Marcos Assuncao
  fin.entry
2203 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2204 6862e602 Marcos Assuncao
}
2205 6862e602 Marcos Assuncao
2206 6862e602 Marcos Assuncao
FUNCTION {proceedings}
2207 6862e602 Marcos Assuncao
{ std.status.using.comma
2208 6862e602 Marcos Assuncao
  start.entry
2209 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2210 6862e602 Marcos Assuncao
  format.editors output
2211 6862e602 Marcos Assuncao
  name.or.dash
2212 6862e602 Marcos Assuncao
  format.book.title "title" output.warn
2213 6862e602 Marcos Assuncao
  format.series output
2214 6862e602 Marcos Assuncao
  format.volume output
2215 6862e602 Marcos Assuncao
  format.number output
2216 6862e602 Marcos Assuncao
  publisher empty$
2217 6862e602 Marcos Assuncao
    { format.address.organization.date output }
2218 6862e602 Marcos Assuncao
    { format.organization "organization" bibinfo.check output
2219 6862e602 Marcos Assuncao
      format.address.publisher.date output
2220 6862e602 Marcos Assuncao
    }
2221 6862e602 Marcos Assuncao
  if$
2222 6862e602 Marcos Assuncao
  format.note output
2223 6862e602 Marcos Assuncao
  format.url output
2224 6862e602 Marcos Assuncao
  fin.entry
2225 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2226 6862e602 Marcos Assuncao
}
2227 6862e602 Marcos Assuncao
2228 6862e602 Marcos Assuncao
FUNCTION {standard}
2229 6862e602 Marcos Assuncao
{ std.status.using.comma
2230 6862e602 Marcos Assuncao
  start.entry
2231 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2232 6862e602 Marcos Assuncao
  format.authors output
2233 6862e602 Marcos Assuncao
  name.or.dash
2234 6862e602 Marcos Assuncao
  format.book.title "title" output.warn
2235 6862e602 Marcos Assuncao
  format.howpublished "howpublished" bibinfo.check output 
2236 6862e602 Marcos Assuncao
  format.organization.institution.standard.type.number output
2237 6862e602 Marcos Assuncao
  format.revision output
2238 6862e602 Marcos Assuncao
  format.date output
2239 6862e602 Marcos Assuncao
  format.note output
2240 6862e602 Marcos Assuncao
  format.url output
2241 6862e602 Marcos Assuncao
  fin.entry
2242 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2243 6862e602 Marcos Assuncao
}
2244 6862e602 Marcos Assuncao
2245 6862e602 Marcos Assuncao
FUNCTION {techreport}
2246 6862e602 Marcos Assuncao
{ std.status.using.comma
2247 6862e602 Marcos Assuncao
  start.entry
2248 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2249 6862e602 Marcos Assuncao
  format.authors "author" output.warn
2250 6862e602 Marcos Assuncao
  name.or.dash
2251 6862e602 Marcos Assuncao
  format.article.title "title" output.warn
2252 6862e602 Marcos Assuncao
  format.howpublished "howpublished" bibinfo.check output 
2253 6862e602 Marcos Assuncao
  format.institution "institution" bibinfo.warn output
2254 6862e602 Marcos Assuncao
  format.address "address" bibinfo.check output
2255 6862e602 Marcos Assuncao
  format.tech.report.number output.nonnull
2256 6862e602 Marcos Assuncao
  format.date "year" output.warn
2257 6862e602 Marcos Assuncao
  format.note output
2258 6862e602 Marcos Assuncao
  format.url output
2259 6862e602 Marcos Assuncao
  fin.entry
2260 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2261 6862e602 Marcos Assuncao
}
2262 6862e602 Marcos Assuncao
2263 6862e602 Marcos Assuncao
FUNCTION {unpublished}
2264 6862e602 Marcos Assuncao
{ std.status.using.comma
2265 6862e602 Marcos Assuncao
  start.entry
2266 6862e602 Marcos Assuncao
  if.url.alt.interword.spacing
2267 6862e602 Marcos Assuncao
  format.authors "author" output.warn
2268 6862e602 Marcos Assuncao
  name.or.dash
2269 6862e602 Marcos Assuncao
  format.article.title "title" output.warn
2270 6862e602 Marcos Assuncao
  format.date output
2271 6862e602 Marcos Assuncao
  format.note "note" output.warn
2272 6862e602 Marcos Assuncao
  format.url output
2273 6862e602 Marcos Assuncao
  fin.entry
2274 6862e602 Marcos Assuncao
  if.url.std.interword.spacing
2275 6862e602 Marcos Assuncao
}
2276 6862e602 Marcos Assuncao
2277 6862e602 Marcos Assuncao
2278 6862e602 Marcos Assuncao
% The special entry type which provides the user interface to the
2279 6862e602 Marcos Assuncao
% BST controls
2280 6862e602 Marcos Assuncao
FUNCTION {IEEEtranBSTCTL}
2281 6862e602 Marcos Assuncao
{ is.print.banners.to.terminal
2282 6862e602 Marcos Assuncao
    { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
2283 6862e602 Marcos Assuncao
      top$
2284 6862e602 Marcos Assuncao
    }
2285 6862e602 Marcos Assuncao
    { skip$ }
2286 6862e602 Marcos Assuncao
  if$
2287 6862e602 Marcos Assuncao
  CTLuse_article_number
2288 6862e602 Marcos Assuncao
  empty$
2289 6862e602 Marcos Assuncao
    { skip$ }
2290 6862e602 Marcos Assuncao
    { CTLuse_article_number
2291 6862e602 Marcos Assuncao
      yes.no.to.int
2292 6862e602 Marcos Assuncao
      'is.use.number.for.article :=
2293 6862e602 Marcos Assuncao
    }
2294 6862e602 Marcos Assuncao
  if$
2295 6862e602 Marcos Assuncao
  CTLuse_paper
2296 6862e602 Marcos Assuncao
  empty$
2297 6862e602 Marcos Assuncao
    { skip$ }
2298 6862e602 Marcos Assuncao
    { CTLuse_paper
2299 6862e602 Marcos Assuncao
      yes.no.to.int
2300 6862e602 Marcos Assuncao
      'is.use.paper :=
2301 6862e602 Marcos Assuncao
    }
2302 6862e602 Marcos Assuncao
  if$
2303 6862e602 Marcos Assuncao
  CTLuse_forced_etal
2304 6862e602 Marcos Assuncao
  empty$
2305 6862e602 Marcos Assuncao
    { skip$ }
2306 6862e602 Marcos Assuncao
    { CTLuse_forced_etal
2307 6862e602 Marcos Assuncao
      yes.no.to.int
2308 6862e602 Marcos Assuncao
      'is.forced.et.al :=
2309 6862e602 Marcos Assuncao
    }
2310 6862e602 Marcos Assuncao
  if$
2311 6862e602 Marcos Assuncao
  CTLmax_names_forced_etal
2312 6862e602 Marcos Assuncao
  empty$
2313 6862e602 Marcos Assuncao
    { skip$ }
2314 6862e602 Marcos Assuncao
    { CTLmax_names_forced_etal
2315 6862e602 Marcos Assuncao
      string.to.integer
2316 6862e602 Marcos Assuncao
      'max.num.names.before.forced.et.al :=
2317 6862e602 Marcos Assuncao
    }
2318 6862e602 Marcos Assuncao
  if$
2319 6862e602 Marcos Assuncao
  CTLnames_show_etal
2320 6862e602 Marcos Assuncao
  empty$
2321 6862e602 Marcos Assuncao
    { skip$ }
2322 6862e602 Marcos Assuncao
    { CTLnames_show_etal
2323 6862e602 Marcos Assuncao
      string.to.integer
2324 6862e602 Marcos Assuncao
      'num.names.shown.with.forced.et.al :=
2325 6862e602 Marcos Assuncao
    }
2326 6862e602 Marcos Assuncao
  if$
2327 6862e602 Marcos Assuncao
  CTLuse_alt_spacing
2328 6862e602 Marcos Assuncao
  empty$
2329 6862e602 Marcos Assuncao
    { skip$ }
2330 6862e602 Marcos Assuncao
    { CTLuse_alt_spacing
2331 6862e602 Marcos Assuncao
      yes.no.to.int
2332 6862e602 Marcos Assuncao
      'is.use.alt.interword.spacing :=
2333 6862e602 Marcos Assuncao
    }
2334 6862e602 Marcos Assuncao
  if$
2335 6862e602 Marcos Assuncao
  CTLalt_stretch_factor
2336 6862e602 Marcos Assuncao
  empty$
2337 6862e602 Marcos Assuncao
    { skip$ }
2338 6862e602 Marcos Assuncao
    { CTLalt_stretch_factor
2339 6862e602 Marcos Assuncao
      'ALTinterwordstretchfactor :=
2340 6862e602 Marcos Assuncao
      "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
2341 6862e602 Marcos Assuncao
      ALTinterwordstretchfactor * "}" *
2342 6862e602 Marcos Assuncao
      write$ newline$
2343 6862e602 Marcos Assuncao
    }
2344 6862e602 Marcos Assuncao
  if$
2345 6862e602 Marcos Assuncao
  CTLdash_repeated_names
2346 6862e602 Marcos Assuncao
  empty$
2347 6862e602 Marcos Assuncao
    { skip$ }
2348 6862e602 Marcos Assuncao
    { CTLdash_repeated_names
2349 6862e602 Marcos Assuncao
      yes.no.to.int
2350 6862e602 Marcos Assuncao
      'is.dash.repeated.names :=
2351 6862e602 Marcos Assuncao
    }
2352 6862e602 Marcos Assuncao
  if$
2353 6862e602 Marcos Assuncao
  CTLname_format_string
2354 6862e602 Marcos Assuncao
  empty$
2355 6862e602 Marcos Assuncao
    { skip$ }
2356 6862e602 Marcos Assuncao
    { CTLname_format_string
2357 6862e602 Marcos Assuncao
      'name.format.string :=
2358 6862e602 Marcos Assuncao
    }
2359 6862e602 Marcos Assuncao
  if$
2360 6862e602 Marcos Assuncao
  CTLname_latex_cmd
2361 6862e602 Marcos Assuncao
  empty$
2362 6862e602 Marcos Assuncao
    { skip$ }
2363 6862e602 Marcos Assuncao
    { CTLname_latex_cmd
2364 6862e602 Marcos Assuncao
      'name.latex.cmd :=
2365 6862e602 Marcos Assuncao
    }
2366 6862e602 Marcos Assuncao
  if$
2367 6862e602 Marcos Assuncao
  CTLname_url_prefix
2368 6862e602 Marcos Assuncao
  missing$
2369 6862e602 Marcos Assuncao
    { skip$ }
2370 6862e602 Marcos Assuncao
    { CTLname_url_prefix
2371 6862e602 Marcos Assuncao
      'name.url.prefix :=
2372 6862e602 Marcos Assuncao
    }
2373 6862e602 Marcos Assuncao
  if$
2374 6862e602 Marcos Assuncao
2375 6862e602 Marcos Assuncao
2376 6862e602 Marcos Assuncao
  num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
2377 6862e602 Marcos Assuncao
    { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ 
2378 6862e602 Marcos Assuncao
      max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
2379 6862e602 Marcos Assuncao
    }
2380 6862e602 Marcos Assuncao
    { skip$ }
2381 6862e602 Marcos Assuncao
  if$
2382 6862e602 Marcos Assuncao
}
2383 6862e602 Marcos Assuncao
2384 6862e602 Marcos Assuncao
2385 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%
2386 6862e602 Marcos Assuncao
%% ENTRY ALIASES %%
2387 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%%
2388 6862e602 Marcos Assuncao
FUNCTION {conference}{inproceedings}
2389 6862e602 Marcos Assuncao
FUNCTION {online}{electronic}
2390 6862e602 Marcos Assuncao
FUNCTION {internet}{electronic}
2391 6862e602 Marcos Assuncao
FUNCTION {webpage}{electronic}
2392 6862e602 Marcos Assuncao
FUNCTION {www}{electronic}
2393 6862e602 Marcos Assuncao
FUNCTION {default.type}{misc}
2394 6862e602 Marcos Assuncao
2395 6862e602 Marcos Assuncao
2396 6862e602 Marcos Assuncao
2397 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%
2398 6862e602 Marcos Assuncao
%% MAIN PROGRAM %%
2399 6862e602 Marcos Assuncao
%%%%%%%%%%%%%%%%%%
2400 6862e602 Marcos Assuncao
2401 6862e602 Marcos Assuncao
READ
2402 6862e602 Marcos Assuncao
2403 6862e602 Marcos Assuncao
EXECUTE {initialize.controls}
2404 6862e602 Marcos Assuncao
EXECUTE {initialize.status.constants}
2405 6862e602 Marcos Assuncao
EXECUTE {banner.message}
2406 6862e602 Marcos Assuncao
2407 6862e602 Marcos Assuncao
EXECUTE {initialize.longest.label}
2408 6862e602 Marcos Assuncao
ITERATE {longest.label.pass}
2409 6862e602 Marcos Assuncao
2410 6862e602 Marcos Assuncao
EXECUTE {begin.bib}
2411 6862e602 Marcos Assuncao
ITERATE {call.type$}
2412 6862e602 Marcos Assuncao
EXECUTE {end.bib}
2413 6862e602 Marcos Assuncao
2414 6862e602 Marcos Assuncao
EXECUTE{completed.message}
2415 6862e602 Marcos Assuncao
2416 6862e602 Marcos Assuncao
2417 6862e602 Marcos Assuncao
%% That's all folks, mds.