Statistiques
| Branche: | Révision :

xlcloud / papers / 2014 / kwapi / IEEEtran.bst @ 5a3344d6

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

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