summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/bibtex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-01-12 01:27:18 +0000
committerKarl Berry <karl@freefriends.org>2007-01-12 01:27:18 +0000
commitc4a18cc35b13311ec9424f499268be12a8b09eb6 (patch)
tree7354bf772e14e36189aad4c96fa2c8284a8b98bf /Master/texmf-dist/bibtex
parent0a029a4557c3517e1f07d338b2acce0f988e4fff (diff)
IEEEtrans 1.7
git-svn-id: svn://tug.org/texlive/trunk@3354 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/bibtex')
-rw-r--r--Master/texmf-dist/bibtex/bib/IEEEtran/IEEEabrv.bib484
-rw-r--r--Master/texmf-dist/bibtex/bib/IEEEtran/IEEEbcpat.bib77
-rw-r--r--Master/texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib1031
-rw-r--r--Master/texmf-dist/bibtex/bib/IEEEtran/IEEEfull.bib292
-rw-r--r--Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst178
-rw-r--r--Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranN.bst2709
-rw-r--r--Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranS.bst189
-rw-r--r--Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSA.bst2778
-rw-r--r--Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSN.bst2850
9 files changed, 9575 insertions, 1013 deletions
diff --git a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEabrv.bib b/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEabrv.bib
index e5277445e98..56cae654b13 100644
--- a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEabrv.bib
+++ b/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEabrv.bib
@@ -1,116 +1,120 @@
-%%
-%% IEEEabrv.bib
-%%
-%% BibTeX bibliography string definitions of the ABBREVIATED titles of
-%% IEEE journals and magazines
-%%
-%% NOTE: This text file uses UNIX line feed conventions. When (human)
-%% reading this file on other platforms, you may have to use a text
-%% editor that can handle lines terminated by the UNIX line feed
-%% character (0x0A).
-%%
-%% This file is designed for bibliography styles that require
-%% abbreviated titles and is not for use in bibliographies that
-%% require full-length titles.
-%%
-%% Version 1.10 (2003/04/02)
-%%
-%% Composed by Michael Shell
-%%
-%% See:
-%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/
-%% for latest version and current contact information.
-%%
-%% Special thanks to Laura Hyslop of IEEE for her help in obtaining the
-%% information needed to compile this file. Also, Volker Kuhlmann kindly
-%% provided some corrections and additions.
-%%
-%%**********************************************************************
-%% Legal Notice:
-%% This code is offered as-is without any warranty either expressed or
-%% implied; without even the implied warranty of MERCHANTABILITY or
-%% FITNESS FOR A PARTICULAR PURPOSE!
-%% User assumes all risk.
-%% In no event shall IEEE or any contributor to this code be liable for
-%% any damages or losses, including, but not limited to, incidental,
-%% consequential, or any other damages, resulting from the use or misuse
-%% of any information contained here.
-%%
-%% This code is distributed under the Perl Artistic License
-%% ( http://language.perl.com/misc/Artistic.html )
-%% and may be freely used, distributed and modified - subject to the
-%% constraints therein.
-%% Retain all contribution notices, credits and disclaimers.
-%%
-%% All comments are the opinions of their respective authors and are not
-%% necessarily endorsed by the IEEE.
-%%**********************************************************************
-%
-%
-% USAGE:
-%
-% \bibliographystyle{mybstfile}
-% \bibliography{IEEEabrv,mybibfile}
-%
-% where the IEEE titles in the .bib database entries use the strings
-% defined here. e.g.,
-%
-%
-% journal = IEEE_J_AC,
-%
-%
-% to yield "{IEEE} Trans. Automat. Contr."
-%
-%
-% IEEE uses abbreviated journal titles in their bibliographies -
-% this file is suitable for work that is to be submitted to the IEEE.
-%
-%
-% For work that requires full-length titles, you should use the full
-% titles provided in the companion file, IEEEfull.bib.
-%
-%
-% ** NOTES **
-%
-% 1. Journals have been grouped according to subject in order to make it
-% easier to locate and extract the definitions for related journals -
-% as most works use references that are confined to a single topic.
-% Magazines are listed in straight alphabetical order.
-%
-% 2. String names are closely based on IEEE's own internal acronyms.
-%
-% 3. Abbreviations follow IEEE's style.
-%
-% 4. Older, out-of-print IEEE titles are included (but not including titles
-% dating prior to IEEE's formation from the IRE and AIEE in 1963).
-%
-% 5. The following NEW/current journal definitions have been disabled because
-% their abbreviations have not yet been finalized/verified:
-%
-% STRING{IEEE_J_MC = "{IEEE} Trans. Mobile Comput."}
-% STRING{IEEE_J_JEM = "{IEEE/TMS} J. Electron. Mater."}
-% STRING{IEEE_J_MCTE = "{IEEE} Trans. Molecular Cellular Tissue Eng."}
-% STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochemical Solid-State Lett."}
-% STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."}
-%
-% 6. The following OLD journal definitions have been disabled because
-% their abbreviations have not yet been found/verified:
-%
-% STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"}
-% STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"}
-%
-% If you know what the proper abbreviation is for a string in #5 or #6 above,
-% email me and I will correct them in the next release.
-
-
-
-
-%%%%%%%%%%%%%%%%%%%
-%% IEEE Journals %%
-%%%%%%%%%%%%%%%%%%%
-
-
-% aerospace and military
+
+IEEEabrv.bib
+V1.12 (2007/01/11)
+Copyright (c) 2002-2007 by Michael Shell
+See: http://www.michaelshell.org/
+for current contact information.
+
+BibTeX bibliography string definitions of the ABBREVIATED titles of
+IEEE journals and magazines and online publications.
+
+This file is designed for bibliography styles that require
+abbreviated titles and is not for use in bibliographies that
+require full-length titles.
+
+Support sites:
+http://www.michaelshell.org/tex/ieeetran/
+http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
+and/or
+http://www.ieee.org/
+
+Special thanks to Laura Hyslop and ken Rawson of IEEE for their help
+in obtaining the information needed to compile this file. Also,
+Volker Kuhlmann and Moritz Borgmann kindly provided some corrections
+and additions.
+
+*************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+
+File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
+ IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
+ IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
+*************************************************************************
+
+
+USAGE:
+
+\bibliographystyle{mybstfile}
+\bibliography{IEEEabrv,mybibfile}
+
+where the IEEE titles in the .bib database entries use the strings
+defined here. e.g.,
+
+
+ journal = IEEE_J_AC,
+
+
+to yield "{IEEE} Trans. Automat. Contr."
+
+
+IEEE uses abbreviated journal titles in their bibliographies -
+this file is suitable for work that is to be submitted to the IEEE.
+
+
+For work that requires full-length titles, you should use the full
+titles provided in the companion file, IEEEfull.bib.
+
+
+** NOTES **
+
+ 1. Journals have been grouped according to subject in order to make it
+ easier to locate and extract the definitions for related journals -
+ as most works use references that are confined to a single topic.
+ Magazines are listed in straight alphabetical order.
+
+ 2. String names are closely based on IEEE's own internal acronyms.
+
+ 3. Abbreviations follow IEEE's style.
+
+ 4. Older, out-of-print IEEE titles are included (but not including titles
+ dating prior to IEEE's formation from the IRE and AIEE in 1963).
+
+ 5. The following NEW/current journal definitions have been disabled because
+ their abbreviations have not yet been verified:
+
+ STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biology Bioinformatics"}
+ STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."}
+ STRING{IEEE_J_DSC = "{IEEE} Trans. Dependable Secure Comput."}
+ STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"}
+
+ 6. The following OLD journal definitions have been disabled because
+ their abbreviations have not yet been found/verified:
+
+ STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"}
+ STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"}
+
+If you know what the proper abbreviation is for a string in #5 or #6 above,
+email me and I will correct them in the next release.
+
+
+
+
+
+IEEE Journals
+
+
+
+aerospace and military
@STRING{IEEE_J_AES = "{IEEE} Trans. Aerosp. Electron. Syst."}
@STRING{IEEE_J_ANE = "{IEEE} Trans. Aerosp. Navig. Electron."}
@STRING{IEEE_J_ANNE = "{IEEE} Trans. Aeronaut. Navig. Electron."}
@@ -120,205 +124,219 @@
-% autos, transportation and vehicles (non-aerospace)
-@STRING{IEEE_J_ITS = "{IEEE} Trans. Intell. Transport. Syst."}
+autos, transportation and vehicles (non-aerospace)
+@STRING{IEEE_J_ITS = "{IEEE} Trans. Intell. Transp. Syst."}
@STRING{IEEE_J_VT = "{IEEE} Trans. Veh. Technol."}
@STRING{IEEE_J_VC = "{IEEE} Trans. Veh. Commun."}
-% circuits, signals, systems, audio and controls
-@STRING{IEEE_J_SPL = "{IEEE} Signal Processing Lett."}
-@STRING{IEEE_J_ASSP = "{IEEE} Trans. Acoust., Speech, Signal Processing"}
+circuits, signals, systems, audio and controls
+@STRING{IEEE_J_SPL = "{IEEE} Signal Process. Lett."}
+@STRING{IEEE_J_ASSP = "{IEEE} Trans. Acoust., Speech, Signal Process."}
@STRING{IEEE_J_AU = "{IEEE} Trans. Audio"}
@STRING{IEEE_J_AUEA = "{IEEE} Trans. Audio Electroacoust."}
-@STRING{IEEE_J_AC = "{IEEE} Trans. Automat. Contr."}
+@STRING{IEEE_J_AC = "{IEEE} Trans. Autom. Control"}
@STRING{IEEE_J_CAS = "{IEEE} Trans. Circuits Syst."}
@STRING{IEEE_J_CASVT = "{IEEE} Trans. Circuits Syst. Video Technol."}
@STRING{IEEE_J_CASI = "{IEEE} Trans. Circuits Syst. {I}"}
@STRING{IEEE_J_CASII = "{IEEE} Trans. Circuits Syst. {II}"}
+in 2004 CASI and CASII renamed part title to CASI_RP and CASII_EB, respectively.
+@STRING{IEEE_J_CASI_RP = "{IEEE} Trans. Circuits Syst. {I}"}
+@STRING{IEEE_J_CASII_EB = "{IEEE} Trans. Circuits Syst. {II}"}
@STRING{IEEE_J_CT = "{IEEE} Trans. Circuit Theory"}
-@STRING{IEEE_J_CST = "{IEEE} Trans. Contr. Syst. Technol."}
-@STRING{IEEE_J_SP = "{IEEE} Trans. Signal Processing"}
+@STRING{IEEE_J_CST = "{IEEE} Trans. Control Syst. Technol."}
+@STRING{IEEE_J_SP = "{IEEE} Trans. Signal Process."}
@STRING{IEEE_J_SU = "{IEEE} Trans. Sonics Ultrason."}
-@STRING{IEEE_J_SAP = "{IEEE} Trans. Speech Audio Processing"}
+@STRING{IEEE_J_SAP = "{IEEE} Trans. Speech Audio Process."}
@STRING{IEEE_J_UE = "{IEEE} Trans. Ultrason. Eng."}
-@STRING{IEEE_J_UFFC = "{IEEE} Trans. Ultrason., Ferroelect., Freq. Contr."}
+@STRING{IEEE_J_UFFC = "{IEEE} Trans. Ultrason., Ferroelectr., Freq. Control"}
-% communications
+communications
@STRING{IEEE_J_COML = "{IEEE} Commun. Lett."}
-@STRING{IEEE_J_JSAC = "{IEEE} J. Select. Areas Commun."}
+@STRING{IEEE_J_JSAC = "{IEEE} J. Sel. Areas Commun."}
@STRING{IEEE_J_COM = "{IEEE} Trans. Commun."}
@STRING{IEEE_J_COMT = "{IEEE} Trans. Commun. Technol."}
@STRING{IEEE_J_WCOM = "{IEEE} Trans. Wireless Commun."}
-% components, packaging and manufacturing
+components, packaging and manufacturing
@STRING{IEEE_J_ADVP = "{IEEE} Trans. Adv. Packag."}
-@STRING{IEEE_J_CHMT = "{IEEE} Trans. Comp., Hybrids, Manufact. Technol."}
-@STRING{IEEE_J_CPMTA = "{IEEE} Trans. Comp., Packag., Manufact. Technol. {A}"}
-@STRING{IEEE_J_CPMTB = "{IEEE} Trans. Comp., Packag., Manufact. Technol. {B}"}
-@STRING{IEEE_J_CPMTC = "{IEEE} Trans. Comp., Packag., Manufact. Technol. {C}"}
-@STRING{IEEE_J_CAPT = "{IEEE} Trans. Comp. Packag. Technol."}
-@STRING{IEEE_J_CAPTS = "{IEEE} Trans. Comp. Packag. Technol."}
-@STRING{IEEE_J_CPART = "{IEEE} Trans. Comp. Parts"}
-@STRING{IEEE_J_EPM = "{IEEE} Trans. Electron. Packag. Manufact."}
-@STRING{IEEE_J_MFT = "{IEEE} Trans. Manufact. Technol."}
+@STRING{IEEE_J_CHMT = "{IEEE} Trans. Compon., Hybrids, Manuf. Technol."}
+@STRING{IEEE_J_CPMTA = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {A}"}
+@STRING{IEEE_J_CPMTB = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {B}"}
+@STRING{IEEE_J_CPMTC = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {C}"}
+@STRING{IEEE_J_CAPT = "{IEEE} Trans. Compon. Packag. Technol."}
+@STRING{IEEE_J_CAPTS = "{IEEE} Trans. Compon. Packag. Technol."}
+@STRING{IEEE_J_CPART = "{IEEE} Trans. Compon. Parts"}
+@STRING{IEEE_J_EPM = "{IEEE} Trans. Electron. Packag. Manuf."}
+@STRING{IEEE_J_MFT = "{IEEE} Trans. Manuf. Technol."}
@STRING{IEEE_J_PHP = "{IEEE} Trans. Parts, Hybrids, Packag."}
@STRING{IEEE_J_PMP = "{IEEE} Trans. Parts, Mater., Packag."}
-% CAD
-@STRING{IEEE_J_TCAD = "{IEEE} J. Technol. Computer Aided Design"}
-@STRING{IEEE_J_CAD = "{IEEE} Trans. Computer-Aided Design"}
+CAD
+@STRING{IEEE_J_TCAD = "{IEEE} J. Technol. Comput. Aided Design"}
+@STRING{IEEE_J_CAD = "{IEEE} Trans. Comput.-Aided Design Integr. Circuits Syst."}
-% coding, data, information, knowledge
-@STRING{IEEE_J_IT = "{IEEE} Trans. Inform. Theory"}
-@STRING{IEEE_J_KDE = "{IEEE} Trans. Knowledge Data Eng."}
+coding, data, information, knowledge
+@STRING{IEEE_J_IT = "{IEEE} Trans. Inf. Theory"}
+@STRING{IEEE_J_KDE = "{IEEE} Trans. Knowl. Data Eng."}
-% computers, computation, networking and software
+computers, computation, networking and software
@STRING{IEEE_J_C = "{IEEE} Trans. Comput."}
+@STRING{IEEE_J_CAL = "{IEEE} Comput. Archit. Lett."}
+disabled till definition is verified
+STRING{IEEE_J_DSC = "{IEEE} Trans. Dependable Secure Comput."}
@STRING{IEEE_J_ECOMP = "{IEEE} Trans. Electron. Comput."}
@STRING{IEEE_J_EVC = "{IEEE} Trans. Evol. Comput."}
@STRING{IEEE_J_FUZZ = "{IEEE} Trans. Fuzzy Syst."}
-% disabled till definition finalized
-STRING{IEEE_J_MC = "{IEEE} Trans. Mobile Comput."}
-@STRING{IEEE_J_NET = "{IEEE/ACM} Trans. Networking"}
-@STRING{IEEE_J_NN = "{IEEE} Trans. Neural Networks"}
+@STRING{IEEE_J_IFS = "{IEEE} Trans. Inf. Forensics Security"}
+@STRING{IEEE_J_MC = "{IEEE} Trans. Mobile Comput."}
+@STRING{IEEE_J_NET = "{IEEE/ACM} Trans. Netw."}
+@STRING{IEEE_J_NN = "{IEEE} Trans. Neural Netw."}
@STRING{IEEE_J_PDS = "{IEEE} Trans. Parallel Distrib. Syst."}
-@STRING{IEEE_J_SE = "{IEEE} Trans. Software Eng."}
+@STRING{IEEE_J_SE = "{IEEE} Trans. Softw. Eng."}
-% computer graphics, imaging, and multimedia
-@STRING{IEEE_J_IP = "{IEEE} Trans. Image Processing"}
+computer graphics, imaging, and multimedia
+@STRING{IEEE_J_JDT = "{IEEE/OSA} J. Display Technol."}
+@STRING{IEEE_J_IP = "{IEEE} Trans. Image Process."}
@STRING{IEEE_J_MM = "{IEEE} Trans. Multimedia"}
-@STRING{IEEE_J_VCG = "{IEEE} Trans. Visual. Comput. Graphics"}
+@STRING{IEEE_J_VCG = "{IEEE} Trans. Vis. Comput. Graphics"}
-% cybernetics, ergonomics, robots, man-machine, and automation
-@STRING{IEEE_J_JRA = "{IEEE} J. Robot. Automat."}
+cybernetics, ergonomics, robots, man-machine, and automation
+@STRING{IEEE_J_ASE = "{IEEE} Trans. Autom. Sci. Eng."}
+@STRING{IEEE_J_JRA = "{IEEE} J. Robot. Autom."}
@STRING{IEEE_J_HFE = "{IEEE} Trans. Hum. Factors Electron."}
@STRING{IEEE_J_MMS = "{IEEE} Trans. Man-Mach. Syst."}
-@STRING{IEEE_J_PAMI = "{IEEE} Trans. Pattern Anal. Machine Intell."}
-@STRING{IEEE_J_RA = "{IEEE} Trans. Robot. Automat."}
+@STRING{IEEE_J_PAMI = "{IEEE} Trans. Pattern Anal. Mach. Intell."}
+in 1989 JRA became RA
+in August 2004, RA split into ASE and RO
+@STRING{IEEE_J_RA = "{IEEE} Trans. Robot. Autom."}
+@STRING{IEEE_J_RO = "{IEEE} Trans. Robot."}
@STRING{IEEE_J_SMC = "{IEEE} Trans. Syst., Man, Cybern."}
@STRING{IEEE_J_SMCA = "{IEEE} Trans. Syst., Man, Cybern. {A}"}
@STRING{IEEE_J_SMCB = "{IEEE} Trans. Syst., Man, Cybern. {B}"}
@STRING{IEEE_J_SMCC = "{IEEE} Trans. Syst., Man, Cybern. {C}"}
-@STRING{IEEE_J_SSC = "{IEEE} Trans. Syst. Sci. Cybernetics"}
+@STRING{IEEE_J_SSC = "{IEEE} Trans. Syst. Sci. Cybern."}
-% earth, wind, fire and water
+earth, wind, fire and water
@STRING{IEEE_J_GE = "{IEEE} Trans. Geosci. Electron."}
-@STRING{IEEE_J_GRS = "{IEEE} Trans. Geosci. Remote Sensing"}
-@STRING{IEEE_J_OE = "{IEEE} J. Oceanic Eng."}
+@STRING{IEEE_J_GRS = "{IEEE} Trans. Geosci. Remote Sens."}
+@STRING{IEEE_J_GRSL = "{IEEE} Geosci. Remote Sens. Lett."}
+@STRING{IEEE_J_OE = "{IEEE} J. Ocean. Eng."}
-% education, engineering, history, IEEE, professional
-% disabled till definition is verified
+education, engineering, history, IEEE, professional
+disabled till definition is verified
STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."}
@STRING{IEEE_J_PROC = "Proc. {IEEE}"}
@STRING{IEEE_J_EDU = "{IEEE} Trans. Educ."}
-@STRING{IEEE_J_EM = "{IEEE} Trans. Eng. Manage."}
-% disabled till definition is verified
+@STRING{IEEE_J_EM = "{IEEE} Trans. Eng. Manag."}
+disabled till definition is verified
STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"}
@STRING{IEEE_J_PC = "{IEEE} Trans. Prof. Commun."}
-% electromagnetics, antennas, EMI, magnetics and microwave
-@STRING{IEEE_J_AWPL = "{IEEE} Antennas Wireless Propagat. Lett."}
-@STRING{IEEE_J_MGWL = "{IEEE} Microwave Guided Wave Lett."}
-% IEEE seems to want "Compon." here, not "Comp."
-@STRING{IEEE_J_MWCL = "{IEEE} Microwave Wireless Compon. Lett."}
-@STRING{IEEE_J_AP = "{IEEE} Trans. Antennas Propagat."}
+electromagnetics, antennas, EMI, magnetics and microwave
+@STRING{IEEE_J_AWPL = "{IEEE} Antennas Wireless Propag. Lett."}
+@STRING{IEEE_J_MGWL = "{IEEE} Microw. Guided Wave Lett."}
+IEEE seems to want "Compon." here, not "Comp."
+@STRING{IEEE_J_MWCL = "{IEEE} Microw. Wireless Compon. Lett."}
+@STRING{IEEE_J_AP = "{IEEE} Trans. Antennas Propag."}
@STRING{IEEE_J_EMC = "{IEEE} Trans. Electromagn. Compat."}
@STRING{IEEE_J_MAG = "{IEEE} Trans. Magn."}
-@STRING{IEEE_J_MTT = "{IEEE} Trans. Microwave Theory Tech."}
+@STRING{IEEE_J_MTT = "{IEEE} Trans. Microw. Theory Tech."}
@STRING{IEEE_J_RFI = "{IEEE} Trans. Radio Freq. Interference"}
@STRING{IEEE_J_TJMJ = "{IEEE} Transl. J. Magn. Jpn."}
-% energy and power
-@STRING{IEEE_J_EC = "{IEEE} Trans. Energy Conversion"}
+energy and power
+@STRING{IEEE_J_EC = "{IEEE} Trans. Energy Convers."}
+@STRING{IEEE_J_PEL = "{IEEE} Power Electron. Lett."}
@STRING{IEEE_J_PWRAS = "{IEEE} Trans. Power App. Syst."}
-@STRING{IEEE_J_PWRD = "{IEEE} Trans. Power Delivery"}
+@STRING{IEEE_J_PWRD = "{IEEE} Trans. Power Del."}
@STRING{IEEE_J_PWRE = "{IEEE} Trans. Power Electron."}
@STRING{IEEE_J_PWRS = "{IEEE} Trans. Power Syst."}
-% industrial, commercial and consumer
-@STRING{IEEE_J_APPIND = "{IEEE} Trans. Applicat. Ind."}
+industrial, commercial and consumer
+@STRING{IEEE_J_APPIND = "{IEEE} Trans. Appl. Ind."}
@STRING{IEEE_J_BC = "{IEEE} Trans. Broadcast."}
-% disabled till definition is verified
+disabled till definition is verified
STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"}
-@STRING{IEEE_J_CE = "{IEEE} Trans. Consumer Electron."}
+@STRING{IEEE_J_CE = "{IEEE} Trans. Consum. Electron."}
@STRING{IEEE_J_IE = "{IEEE} Trans. Ind. Electron."}
@STRING{IEEE_J_IECI = "{IEEE} Trans. Ind. Electron. Contr. Instrum."}
-@STRING{IEEE_J_IA = "{IEEE} Trans. Ind. Applicat."}
-@STRING{IEEE_J_IGA = "{IEEE} Trans. Ind. Gen. Applicat."}
+@STRING{IEEE_J_IA = "{IEEE} Trans. Ind. Appl."}
+@STRING{IEEE_J_IGA = "{IEEE} Trans. Ind. Gen. Appl."}
+@STRING{IEEE_J_IINF = "{IEEE} Trans. Ind. Informat."}
+@STRING{IEEE_J_PSE = "{IEEE} J. Product Safety Eng."}
-% instrumentation and measurement
+instrumentation and measurement
@STRING{IEEE_J_IM = "{IEEE} Trans. Instrum. Meas."}
-% insulation and materials
-% disabled till definition finalized
-STRING{IEEE_J_JEM = "{IEEE/TMS} J. Electron. Mater."}
-@STRING{IEEE_J_DEI = "{IEEE} Trans. Dielect. Elect. Insulation"}
-@STRING{IEEE_J_EI = "{IEEE} Trans. Elect. Insulation"}
+insulation and materials
+@STRING{IEEE_J_JEM = "{IEEE/TMS} J. Electron. Mater."}
+@STRING{IEEE_J_DEI = "{IEEE} Trans. Dielectr. Electr. Insul."}
+@STRING{IEEE_J_EI = "{IEEE} Trans. Electr. Insul."}
-% mechanical
-@STRING{IEEE_J_MECH = "{IEEE/ASME} Trans. Mechatron."}
+mechanical
+@STRING{IEEE_J_MECH = "{IEEE/ASME} Trans. Mechatronics"}
@STRING{IEEE_J_MEMS = "J. Microelectromech. Syst."}
-% medical and biological
+medical and biological
@STRING{IEEE_J_BME = "{IEEE} Trans. Biomed. Eng."}
-% Note: The B-ME journal later dropped the hyphen and became the BME.
+Note: The B-ME journal later dropped the hyphen and became the BME.
@STRING{IEEE_J_B-ME = "{IEEE} Trans. Bio-Med. Eng."}
@STRING{IEEE_J_BMELC = "{IEEE} Trans. Bio-Med. Electron."}
-@STRING{IEEE_J_ITBM = "{IEEE} Trans. Inform. Technol. Biomed."}
+disabled till definition is verified
+STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biology Bioinformatics"}
+@STRING{IEEE_J_ITBM = "{IEEE} Trans. Inf. Technol. Biomed."}
@STRING{IEEE_J_ME = "{IEEE} Trans. Med. Electron."}
@STRING{IEEE_J_MI = "{IEEE} Trans. Med. Imag."}
-% disabled till definition finalized
-STRING{IEEE_J_MCTE = "{IEEE} Trans. Molecular Cellular Tissue Eng."}
@STRING{IEEE_J_NB = "{IEEE} Trans. Nanobiosci."}
-@STRING{IEEE_J_NSRE = "{IEEE} Trans. Neural Syst. Rehab. Eng."}
-@STRING{IEEE_J_RE = "{IEEE} Trans. Rehab. Eng."}
+@STRING{IEEE_J_NSRE = "{IEEE} Trans. Neural Syst. Rehabil. Eng."}
+@STRING{IEEE_J_RE = "{IEEE} Trans. Rehabil. Eng."}
-% optics, lightwave and photonics
+ optics, lightwave and photonics
@STRING{IEEE_J_PTL = "{IEEE} Photon. Technol. Lett."}
-@STRING{IEEE_J_JLT = "J. Lightwave Technol."}
+@STRING{IEEE_J_JLT = "J. Lightw. Technol."}
-% physics, electrons, nanotechnology, nuclear and quantum electronics
+physics, electrons, nanotechnology, nuclear and quantum electronics
@STRING{IEEE_J_EDL = "{IEEE} Electron Device Lett."}
@STRING{IEEE_J_JQE = "{IEEE} J. Quantum Electron."}
-@STRING{IEEE_J_JSTQE = "{IEEE} J. Select. Topics Quantum Electron."}
+@STRING{IEEE_J_JSTQE = "{IEEE} J. Sel. Topics Quantum Electron."}
@STRING{IEEE_J_ED = "{IEEE} Trans. Electron Devices"}
@STRING{IEEE_J_NANO = "{IEEE} Trans. Nanotechnol."}
@STRING{IEEE_J_NS = "{IEEE} Trans. Nucl. Sci."}
@@ -326,48 +344,48 @@ STRING{IEEE_J_MCTE = "{IEEE} Trans. Molecular Cellular Tissue Eng."}
-% reliability
-% IEEE seems to want "Mat." here, not "Mater."
-@STRING{IEEE_J_DMR = "{IEEE} Trans. Device Mat. Rel."}
+reliability
+IEEE seems to want "Mat." here, not "Mater."
+@STRING{IEEE_J_DMR = "{IEEE} Trans. Device Mater. Rel."}
@STRING{IEEE_J_R = "{IEEE} Trans. Rel."}
-% semiconductors, superconductors, electrochemical and solid state
-% disabled till definition finalized
-STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochemical Solid-State Lett."}
+semiconductors, superconductors, electrochemical and solid state
+@STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochem. Solid-State Lett."}
@STRING{IEEE_J_JSSC = "{IEEE} J. Solid-State Circuits"}
-@STRING{IEEE_J_ASC = "{IEEE} Trans. Appl. Superconduct."}
-@STRING{IEEE_J_SM = "{IEEE} Trans. Semiconduct. Manufact."}
+@STRING{IEEE_J_ASC = "{IEEE} Trans. Appl. Supercond."}
+@STRING{IEEE_J_SM = "{IEEE} Trans. Semicond. Manuf."}
-% sensors
+sensors
@STRING{IEEE_J_SENSOR = "{IEEE} Sensors J."}
-% VLSI
+VLSI
@STRING{IEEE_J_VLSI = "{IEEE} Trans. {VLSI} Syst."}
-%%%%%%%%%%%%%%%%%%%%
-%% IEEE Magazines %%
-%%%%%%%%%%%%%%%%%%%%
+IEEE Magazines
-@STRING{IEEE_M_AES = "{IEEE} Aerosp. Electron. Syst. Mag"}
-@STRING{IEEE_M_HIST = "{IEEE} Annals Hist. Comput."}
-@STRING{IEEE_M_AP = "{IEEE} Antennas Propagat. Mag."}
+
+
+@STRING{IEEE_M_AES = "{IEEE} Aerosp. Electron. Syst. Mag."}
+@STRING{IEEE_M_HIST = "{IEEE} Ann. Hist. Comput."}
+@STRING{IEEE_M_AP = "{IEEE} Antennas Propag. Mag."}
@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Mag."}
@STRING{IEEE_M_CD = "{IEEE} Circuits Devices Mag."}
@STRING{IEEE_M_CAS = "{IEEE} Circuits Syst. Mag."}
@STRING{IEEE_M_COM = "{IEEE} Commun. Mag."}
@STRING{IEEE_M_COMSOC = "{IEEE} Commun. Soc. Mag."}
-% CSEM changed to CSE in 1999
+@STRING{IEEE_M_CIM = "{IEEE} Comput. Intell. Mag."}
+CSEM changed to CSE in 1999
@STRING{IEEE_M_CSE = "{IEEE} Comput. Sci. Eng."}
@STRING{IEEE_M_CSEM = "{IEEE} Comput. Sci. Eng. Mag."}
@STRING{IEEE_M_C = "{IEEE} Computer"}
@@ -377,6 +395,7 @@ STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochemical Solid-State Lett."}
@STRING{IEEE_M_CS = "{IEEE} Control Syst. Mag."}
@STRING{IEEE_M_DTC = "{IEEE} Des. Test. Comput."}
@STRING{IEEE_M_EI = "{IEEE} Electr. Insul. Mag."}
+@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnol. Rev."}
@STRING{IEEE_M_EMB = "{IEEE} Eng. Med. Biol. Mag."}
@STRING{IEEE_M_EMR = "{IEEE} Eng. Manag. Rev."}
@STRING{IEEE_M_EXP = "{IEEE} Expert"}
@@ -386,26 +405,43 @@ STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochemical Solid-State Lett."}
@STRING{IEEE_M_IC = "{IEEE} Internet Comput."}
@STRING{IEEE_M_ITP = "{IEEE} {IT} Prof."}
@STRING{IEEE_M_MICRO = "{IEEE} Micro"}
-@STRING{IEEE_M_MW = "{IEEE} Microwave"}
+@STRING{IEEE_M_MW = "{IEEE} Microw. Mag."}
@STRING{IEEE_M_MM = "{IEEE} Multimedia"}
-@STRING{IEEE_M_NET = "{IEEE} Network"}
-% IEEE's editorial manual lists "Pers. Commun.",
-% but "Personal Commun. Mag." seems to be what is used in the journals
+@STRING{IEEE_M_NET = "{IEEE} Netw."}
+IEEE's editorial manual lists "Pers. Commun.",
+but "Personal Commun. Mag." seems to be what is used in the journals
@STRING{IEEE_M_PCOM = "{IEEE} Personal Commun. Mag."}
@STRING{IEEE_M_POT = "{IEEE} Potentials"}
-% CAP and PER merged to form PE in 2003
+CAP and PER merged to form PE in 2003
@STRING{IEEE_M_PE = "{IEEE} Power Energy Mag."}
@STRING{IEEE_M_PER = "{IEEE} Power Eng. Rev."}
-@STRING{IEEE_M_RA = "{IEEE} Robot. Automat. Mag."}
-@STRING{IEEE_M_SP = "{IEEE} Signal Processing Mag."}
+@STRING{IEEE_M_PVC = "{IEEE} Pervasive Comput."}
+@STRING{IEEE_M_RA = "{IEEE} Robot. Autom. Mag."}
+@STRING{IEEE_M_SAP = "{IEEE} Security Privacy"}
+@STRING{IEEE_M_SP = "{IEEE} Signal Process. Mag."}
@STRING{IEEE_M_S = "{IEEE} Softw."}
@STRING{IEEE_M_SPECT = "{IEEE} Spectr."}
@STRING{IEEE_M_TS = "{IEEE} Technol. Soc. Mag."}
+@STRING{IEEE_M_VT = "{IEEE} Veh. Technol. Mag."}
@STRING{IEEE_M_WC = "{IEEE} Wireless Commun. Mag."}
-@STRING{IEEE_M_TODAY = "Today's Eng."}
+@STRING{IEEE_M_TODAY = "Today's Engineer"}
+
+
+
+
+
+
+IEEE Online Publications
+
+
+
+@STRING{IEEE_O_CSTO = "{IEEE} Commun. Surveys Tuts."}
+disabled till definition is verified
+STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"}
+
-%--
-%EOF
+--
+EOF
diff --git a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEbcpat.bib b/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEbcpat.bib
deleted file mode 100644
index c63f5e8d9e6..00000000000
--- a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEbcpat.bib
+++ /dev/null
@@ -1,77 +0,0 @@
-%% IEEEbcpat.bib
-%%
-%% Obsolete BibTeX bibliography string definitions for backward
-%% compatibility of IEEEtran.bst - DO NOT USE FOR NEW WORK!
-%%
-%% NOTE: This text file uses UNIX line feed conventions. When (human)
-%% reading this file on other platforms, you may have to use a text
-%% editor that can handle lines terminated by the UNIX line feed
-%% character (0x0A).
-%%
-%% The strings defined here are unchanged from the originals that were
-%% contained in the older ieeetr.bst and IEEEbib.bst files.
-%%
-%% THESE STRING DEFINITIONS ARE NOT CORRECT FOR IEEE RELATED WORK!
-%%
-%% Please update your databases to use the modern IEEEabrv.bst and not
-%% any strings contained here.
-%%
-%% Version 1.00 (2002/08/13)
-%%
-%% Composed by Michael Shell
-%%
-%% See:
-%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/
-%% for latest version and current contact information.
-%%
-%%**********************************************************************
-%% Legal Notice:
-%% This code is offered as-is without any warranty either expressed or
-%% implied; without even the implied warranty of MERCHANTABILITY or
-%% FITNESS FOR A PARTICULAR PURPOSE!
-%% User assumes all risk.
-%% In no event shall IEEE or any contributor to this code be liable for
-%% any damages or losses, including, but not limited to, incidental,
-%% consequential, or any other damages, resulting from the use or misuse
-%% of any information contained here.
-%%
-%% This code is distributed under the Perl Artistic License
-%% ( http://language.perl.com/misc/Artistic.html )
-%% and may be freely used, distributed and modified - subject to the
-%% constraints therein.
-%% Retain all contribution notices, credits and disclaimers.
-%%
-%% All comments are the opinions of their respective authors and are not
-%% necessarily endorsed by the IEEE.
-%%**********************************************************************
-%
-%
-% USAGE:
-%
-% \bibliographystyle{mybstfile}
-% \bibliography{IEEEbcpat,mybibfile}
-
-
-@STRING{acmcs = "ACM Computing Surveys"}
-@STRING{acta = "Acta Informatica"}
-@STRING{cacm = "Communications of the ACM"}
-@STRING{ibmjrd = "IBM Journal of Research and Development"}
-@STRING{ibmsj = "IBM Systems Journal"}
-@STRING{ieeese = "IEEE Transactions on Software Engineering"}
-@STRING{ieeetc = "IEEE Transactions on Computers"}
-@STRING{ieeetcad = "IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
-@STRING{ipl = "Information Processing Letters"}
-@STRING{jacm = "Journal of the ACM"}
-@STRING{jcss = "Journal of Computer and System Sciences"}
-@STRING{scp = "Science of Computer Programming"}
-@STRING{sicomp = "SIAM Journal on Computing"}
-@STRING{tocs = "ACM Transactions on Computer Systems"}
-@STRING{tods = "ACM Transactions on Database Systems"}
-@STRING{tog = "ACM Transactions on Graphics"}
-@STRING{toms = "ACM Transactions on Mathematical Software"}
-@STRING{toois = "ACM Transactions on Office Information Systems"}
-@STRING{toplas = "ACM Transactions on Programming Languages and Systems"}
-@STRING{tcs = "Theoretical Computer Science"}
-
-
-
diff --git a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib b/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib
index ad22d5b4b69..024745c88fe 100644
--- a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib
+++ b/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib
@@ -1,165 +1,251 @@
-%% IEEEexample.bib
-%% V1.10
-%% 2002/09/27
-%% Copyright (c) 2002 by Michael Shell
-%% mshell(at)ece.gatech.edu
-%% See support website below for current contact information.
-%%
-%% NOTE: This text file uses UNIX line feed conventions. When (human)
-%% reading this file on other platforms, you may have to use a text
-%% editor that can handle lines terminated by the UNIX line feed
-%% character (0x0A).
-%%
-%% This is an example BibTeX database for the official IEEEtran.bst
-%% BibTeX style file.
-%%
-%% Some entries call strings that are defined in the IEEEabrv.bib file.
-%% Therefore, IEEEabrv.bib should be loaded prior to this file.
-%% Usage:
-%%
-%% \bibliographystyle{./IEEEtran} % use IEEEtran.bst style
-%% \bibliography{./IEEEabrv,./IEEEexample}
-%%
-%%
-%% Support sites:
-%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/
-%% and/or
-%% http://www.ieee.org
-%%**********************************************************************
-%% Legal Notice:
-%% This code is offered as-is without any warranty either expressed or
-%% implied; without even the implied warranty of MERCHANTABILITY or
-%% FITNESS FOR A PARTICULAR PURPOSE!
-%% User assumes all risk.
-%% In no event shall IEEE or any contributor to this code be liable for
-%% any damages or losses, including, but not limited to, incidental,
-%% consequential, or any other damages, resulting from the use or misuse
-%% of any information contained here.
-%%
-%% This code is distributed under the Perl Artistic License
-%% ( http://language.perl.com/misc/Artistic.html )
-%% and may be freely used, distributed and modified - subject to the
-%% constraints therein.
-%% Retain all contribution notices, credits and disclaimers.
-%%
-%% All comments are the opinions of their respective authors and are not
-%% necessarily endorsed by the IEEE.
-%%**********************************************************************
-
-
-% Note that, because the example references were taken from actual IEEE
-% publications, these examples do not always contain the full amount
-% of information that may be desirable (for use with other BibTeX styles).
-% In particular, full names (not abbreviated with initials) should be
-% entered whenever possible as some (non-IEEE) bibliography styles use
-% full names. IEEEtran.bst will automatically abbreviate when it
-% encounters full names.
+IEEEexample.bib
+V1.12 (2007/01/11)
+Copyright (c) 2002-2007 by Michael Shell
+See: http://www.michaelshell.org/
+for current contact information.
+
+This is an example BibTeX database for the official IEEEtran.bst
+BibTeX style file.
+
+Some entries call strings that are defined in the IEEEabrv.bib file.
+Therefore, IEEEabrv.bib should be loaded prior to this file.
+Usage:
+
+\bibliographystyle{./IEEEtran}
+\bibliography{./IEEEabrv,./IEEEexample}
+
+
+Support sites:
+http://www.michaelshell.org/tex/ieeetran/
+http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
+and/or
+http://www.ieee.org/
+
+*************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+
+File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
+ IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
+ IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
+*************************************************************************
+
+
+Note that, because the example references were taken from actual IEEE
+publications, these examples do not always contain the full amount
+of information that may be desirable (for use with other BibTeX styles).
+In particular, full names (not abbreviated with initials) should be
+entered whenever possible as some (non-IEEE) bibliography styles use
+full names. IEEEtran.bst will automatically abbreviate when it encounters
+full names.
-% references for the IEEEtran.bst documentation
-% the distribution site for IEEEtran.bst
+references for the IEEEtran.bst documentation
+IEEEtran homepage
+@electronic{IEEEhowto:IEEEtranpage,
+ author = "Michael Shell",
+ title = "{IEEE}tran Homepage",
+ url = "http://www.michaelshell.org/tex/ieeetran/",
+ year = "2007"
+}
+
+
+the distribution site for IEEEtran.bst
@electronic{IEEEexample:shellCTANpage,
author = "Michael Shell",
- title = "{IEEE}tran Homepage on {CTAN}",
- url = "http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/",
- year = "2002"
-};
+ title = "{IEEE}tran Webpage on {CTAN}",
+ url = "http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/",
+ year = "2007"
+}
+
-% the IEEE website
-% sort key is needed for sorting styles
+the IEEE website
+sort key is needed for sorting styles
@electronic{IEEEexample:IEEEwebsite,
title = "The {IEEE} Website",
url = "http://www.ieee.org/",
- year = "2002",
+ year = "2007",
key = "IEEE"
-};
+}
+
-% The BibTeX user's guide.
-% The filename could have been put in the URL instead. But, there might
-% be other interesting things for the user in the same directory - and
-% the filename might change before the directory that contains it.
+The BibTeX user's guide.
+The filename could have been put in the URL instead. But, there might
+be other interesting things for the user in the same directory - and
+the filename might change before the directory that contains it.
@electronic{IEEEexample:bibtexuser,
author = "Oren Patashnik",
- title = "{\BibTeX}ing",
+ title = "{{\BibTeX}}ing",
howpublished = "{btxdoc.pdf}",
url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/",
month = feb,
year = "1988"
-};
+}
-% The BibTeX style designer's guide.
+
+The BibTeX style designer's guide.
@electronic{IEEEexample:bibtexdesign,
author = "Oren Patashnik",
- title = "Designing {\BibTeX\ } Styles",
+ title = "Designing {{\BibTeX}} Styles",
howpublished = "{btxhak.pdf}",
url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/",
month = feb,
year = "1988"
-};
+}
+
-% The BibTeX Tips and FAQ guide.
+A comprehensive BibTeX tutorial.
+@electronic{IEEEexample:tamethebeast,
+ author = "Nicolas Markey",
+ title = "Tame the BeaST --- The B to X of {{\BibTeX}}",
+ url = "http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/",
+ month = oct,
+ year = "2005"
+}
+
+
+The BibTeX Tips and FAQ guide.
@electronic{IEEEexample:bibtexFAQ,
author = "David Hoadley and Michael Shell",
- title = "{\BibTeX}\ Tips and {FAQ}",
- howpublished = "{btxFAQ.txt}",
+ title = "{{\BibTeX}} Tips and {FAQ}",
+ howpublished = "{btxFAQ.pdf}",
url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/",
- month = oct,
- year = "2002"
-};
+ month = jan,
+ year = "2007"
+}
+
+
+The TeX FAQ
+@electronic{IEEEexample:texfaq,
+ author = "Robin Fairbairns",
+ title = "The {{\TeX}} {FAQ}",
+ url = "http://www.tex.ac.uk/cgi-bin/texfaq2html/",
+ month = jan,
+ year = "2007"
+}
-% TeX User Group Bibliography Archive
+
+A BibTeX Guide via Examples.
+@electronic{IEEEexample:bibtexguide,
+ author = "Ki-Joo Kim",
+ title = "A {{\BibTeX}} Guide via Examples",
+ howpublished = "{bibtex\_guide.pdf}",
+ url = "http://www.geocities.com/kijoo2000/",
+ month = apr,
+ year = "2004"
+}
+
+
+TeX User Group Bibliography Archive
@electronic{IEEEexample:beebe_archive,
author = "Nelson H. F. Beebe",
- title = "{\TeX\ }User Group Bibliography Archive",
+ title = "{{\TeX}} User Group Bibliography Archive",
url = "http://www.math.utah.edu:8080/pub/tex/bib/index-table.html",
- month = may,
- year = "2002"
-};
+ month = aug,
+ year = "2006"
+}
+
+The natbib.sty package.
+@electronic{ctan:natbib,
+ author = "Patrick W. Daly",
+ title = "The natbib.sty package",
+ url = "http://www.ctan.org/tex-archive/macros/latex/contrib/natbib/",
+ month = sep,
+ year = "2006"
+}
-% The url.sty package.
+The url.sty package.
@electronic{IEEEexample:urlsty,
author = "Donald Arseneau",
- title = "The url.sty package",
- url = "http://www.ctan.org/tex-archive/macros/latex/contrib/other/misc/",
- month = mar,
- year = "1999",
-};
+ title = "The url.sty Package",
+ url = "http://www.ctan.org/tex-archive/macros/latex/contrib/misc/",
+ month = jun,
+ year = "2005",
+}
-% The hyperref.sty package.
+The hyperref.sty package.
@electronic{IEEEexample:hyperrefsty,
author = "Sebastian Rahtz and Heiko Oberdiek",
- title = "The hyperref.sty package",
- url = "http://www.ctan.org/tex-archive/macros/latex/contrib/supported/hyperref/",
- month = jul,
- year = "2002",
-};
+ title = "The hyperref.sty Package",
+ url = "http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/",
+ month = nov,
+ year = "2006",
+}
+
+
+The breakurl.sty package.
+@electronic{IEEEexample:breakurl,
+ author = "Vilar Camara Neto",
+ title = "The breakurl.sty Package",
+ url = "http://www.ctan.org/tex-archive/macros/latex/contrib/breakurl/",
+ month = aug,
+ year = "2006",
+}
-% The Babel package.
+
+The Babel package.
@electronic{IEEEexample:babel,
author = "Johannes Braams",
- title = "The {Babel} package",
+ title = "The Babel Package",
url = "http://www.ctan.org/tex-archive/macros/latex/required/babel/",
- month = feb,
- year = "2001",
-};
+ month = nov,
+ year = "2005",
+}
+
+
+The multibib package.
+@electronic{IEEEexample:multibibsty,
+ author = "Thorsten Hansen",
+ title = "The multibib.sty package",
+ url = "http://www.ctan.org/tex-archive/macros/latex/contrib/multibib/",
+ month = jan,
+ year = "2004"
+}
+The biblatex package.
+@electronic{IEEEexample:biblatex,
+ author = "Philipp Lehman",
+ title = "The biblatex package",
+ url = "http://www.ctan.org/tex-archive/macros/latex/exptl/biblatex/",
+ month = jan,
+ year = "2007"
+}
-% The three most common and typical types of references used in
-% IEEE publications:
+The three most common and typical types of references used in
+IEEE publications:
-% an article in a journal
-% Note the use of the IEEE_J_EDL string, defined in the IEEEabrv.bib file,
-% for the journal name. IEEEtran.bst defines the BibTeX standard three
-% letter month codes per IEEE style.
-% From the June 2002 issue of "IEEE Transactions on Electron Devices",
-% page 996, reference #16.
+an article in a journal
+Note the use of the IEEE_J_EDL string, defined in the IEEEabrv.bib file,
+for the journal name. IEEEtran.bst defines the BibTeX standard three
+letter month codes per IEEE style.
+From the June 2002 issue of "IEEE Transactions on Electron Devices",
+page 996, reference #16.
@article{IEEEexample:article_typical,
author = "S. Zhang and C. Zhu and J. K. O. Sin and P. K. T. Mok",
title = "A Novel Ultrathin Elevated Channel Low-temperature
@@ -169,14 +255,15 @@
month = nov,
year = "1999",
pages = "569-571"
-};
-
-% journal article using et al.
-% The (five) authors are actually: F. Delorme, S. Slempkes, G. Alibert,
-% B. Rose, J. Brandon
-% The month (July) was not given here.
-% From the September 1998 issue of "IEEE Journal on Selected Areas in
-% Communications", page 1257, reference #28.
+}
+
+
+journal article using et al.
+The (five) authors are actually: F. Delorme, S. Slempkes, G. Alibert,
+B. Rose, J. Brandon
+The month (July) was not given here.
+From the September 1998 issue of "IEEE Journal on Selected Areas in
+Communications", page 1257, reference #28.
@article{IEEEexample:articleetal,
author = "F. Delorme and others",
title = "Butt-jointed {DBR} Laser With 15 {nm} Tunability Grown
@@ -186,13 +273,13 @@
number = "15",
year = "1995",
pages = "1244-1245"
-};
+}
-% a paper in a conference proceedings
-% "conference" can be used as an alias for "inproceedings"
-% From the June 2002 issue of "Journal of Microelectromechanical Systems",
-% page 205, reference #16.
+a paper in a conference proceedings
+"conference" can be used as an alias for "inproceedings"
+From the June 2002 issue of "Journal of Microelectromechanical Systems",
+page 205, reference #16.
@inproceedings{IEEEexample:conf_typical,
author = "R. K. Gupta and S. D. Senturia",
title = "Pull-in Time Dynamics as a Measure of Absolute Pressure",
@@ -202,34 +289,34 @@
month = jan,
year = "1997",
pages = "290-294"
-};
+}
-% a book
-% From the May 2002 issue of "IEEE Transactions on Magnetics",
-% page 1466, reference #4.
+a book
+From the May 2002 issue of "IEEE Transactions on Magnetics",
+page 1466, reference #4.
@book{IEEEexample:book_typical,
author = "B. D. Cullity",
title = "Introduction to Magnetic Materials",
publisher = "Addison-Wesley",
address = "Reading, MA",
year = "1972"
-};
+}
-% Other examples
+Other examples
-% journal article with large page numbers, IEEE will divide numbers 5 digits
-% or longer into groups of three with small spaces between them. Page ranges
-% can be separated via either "-" or "--", IEEEtran.bst will automatically
-% convert the separator dash(es) to "--".
-% Authors and/or IEEE do not always provide/use the journal number, but it
-% was used in this case. IEEEtran.bst can be configured to ignore journal
-% numbers if desired.
-% From the August 2000 issue of "IEEE Photonics Technology Letters",
-% page 1039, reference #11.
+journal article with large page numbers, IEEE will divide numbers 5 digits
+or longer into groups of three with small spaces between them. Page ranges
+can be separated via either "-" or "--", IEEEtran.bst will automatically
+convert the separator dash(es) to "--".
+Authors and/or IEEE do not always provide/use the journal number, but it
+was used in this case. IEEEtran.bst can be configured to ignore journal
+numbers if desired.
+From the August 2000 issue of "IEEE Photonics Technology Letters",
+page 1039, reference #11.
@article{IEEEexample:articlelargepages,
author = "A. Castaldini and A. Cavallini and B. Fraboni
and P. Fernandez and J. Piqueras",
@@ -240,13 +327,13 @@
number = "23",
year = "1997",
pages = "14897-14900"
-};
+}
-% journal article with dual months
-% use the BibTeX "#" concatenation operator
-% From the March 2002 issue of "IEEE Transactions on Mechatronics",
-% page 21, reference #8.
+journal article with dual months
+use the BibTeX "#" concatenation operator
+From the March 2002 issue of "IEEE Transactions on Mechatronics",
+page 21, reference #8.
@article{IEEEexample:articledualmonths,
author = "Y. Okada and K. Dejima and T. Ohishi",
title = "Analysis and Comparison of {PM} Synchronous Motor and
@@ -256,14 +343,14 @@
month = sep # "/" # oct,
year = "1995",
pages = "1047-1053"
-};
+}
-% journal article to be published as a misc entry type
-% date information like month and year is optional
-% However, the article form like that below may be a better approach.
-% From the May 2002 issue of "IEEE Journal of Selected Areas in
-% Communication", page 725, reference #3.
+journal article to be published as a misc entry type
+date information like month and year is optional
+However, the article form like that below may be a better approach.
+From the May 2002 issue of "IEEE Journal of Selected Areas in
+Communication", page 725, reference #3.
@misc{IEEEexample:TBPmisc,
author = "M. Coates and A. Hero and R. Nowak and B. Yu",
title = "Internet Tomography",
@@ -271,30 +358,30 @@
month = may,
year = "2002",
note = "to be published"
-};
+}
-% journal article to be published as an article entry type
-% year is required, so if absent, use the year field to hold
-% the "submitted for publication" in order to avoid a warning for
-% the missing year field.
-% From the June 2002 issue of "IEEE Transactions on Information Theory",
-% page 1461, reference #21.
+journal article to be published as an article entry type
+year is required, so if absent, use the year field to hold
+the "submitted for publication" in order to avoid a warning for
+the missing year field.
+From the June 2002 issue of "IEEE Transactions on Information Theory",
+page 1461, reference #21.
@article{IEEEexample:TBParticle,
author = "N. Kahale and R. Urbanke",
title = "On the Minimum Distance of Parallel and Serially
Concatenated Codes",
journal = IEEE_J_IT,
year = "submitted for publication"
-};
+}
-% book with editor and no author
-% From the June 2002 issue of "IEEE Transactions on Information Theory",
-% page 1725, reference #1.
+book with editor and no author
+From the June 2002 issue of "IEEE Transactions on Information Theory",
+page 1725, reference #1.
@book{IEEEexample:bookwitheditor,
editor = "J. C. Candy and G. C. Temes",
title = "Oversampling Delta-Sigma Data Converters Theory,
@@ -302,21 +389,21 @@
publisher = "{IEEE} Press.",
address = "New York",
year = "1992"
-};
-
-
-% book with edition, author and editor
-% Note that the standard BibTeX styles do not support book entries with both
-% author and editor fields, but IEEEtran.bst does.
-% The standard BibTeX way of specifying the edition is to use capitalized
-% ordinal words such as "First", "Second", etc. Most .bst files can convert
-% up to about "Fifth" into the format needed. IEEEtran.bst can convert up
-% to "Tenth" to the "Arabic ordinal" form IEEE uses (e.g., "10th"). For
-% editions over the tenth, it is best to use the "Arabic ordinal" form for
-% IEEE related work (e.g., "101st")
-% Note how "Jr." has to be entered.
-% From the May 2002 issue of "Journal of Lightwave Technology", page 856,
-% reference #17.
+}
+
+
+book with edition, author and editor
+Note that the standard BibTeX styles do not support book entries with both
+author and editor fields, but IEEEtran.bst does.
+The standard BibTeX way of specifying the edition is to use capitalized
+ordinal words such as "First", "Second", etc. Most .bst files can convert
+up to about "Fifth" into the format needed. IEEEtran.bst can convert up
+to "Tenth" to the "Arabic ordinal" form IEEE uses (e.g., "10th"). For
+editions over the tenth, it is best to use the "Arabic ordinal" form for
+IEEE related work (e.g., "101st")
+Note how "Jr." has to be entered.
+From the May 2002 issue of "Journal of Lightwave Technology", page 856,
+reference #17.
@book{IEEEexample:book,
author = "S. M. Metev and V. P. Veiko",
editor = "Osgood, Jr., R. M.",
@@ -325,12 +412,12 @@
publisher = "Springer-Verlag",
address = "Berlin, Germany",
year = "1998"
-};
+}
-% book with series and volume
-% From the January 2000 issue of "IEEE Transactions on Communications",
-% page 11, reference #31.
+book with series and volume
+From the January 2000 issue of "IEEE Transactions on Communications",
+page 11, reference #31.
@book{IEEEexample:bookwithseriesvolume,
editor = "J. Breckling",
title = "The Analysis of Directional Time Series: Applications to
@@ -340,14 +427,14 @@
address = "Berlin, Germany",
year = "1989",
volume = "61"
-};
+}
-% inbook with chapter number. The pages field could also have been given.
-% The chapter number could be changed to something else such as a section
-% number via the type field: type = "sec.".
-% From the May 2002 issue of "IEEE Transactions on Circuits and Systems---I:
-% Fundamental Applications and Theory", page 638, reference #22.
+inbook with chapter number. The pages field could also have been given.
+The chapter number could be changed to something else such as a section
+number via the type field: type = "sec.".
+From the May 2002 issue of "IEEE Transactions on Circuits and Systems---I:
+Fundamental Applications and Theory", page 638, reference #22.
@inbook{IEEEexample:inbook,
author = "H. E. Rose",
title = "A Course in Number Theory",
@@ -355,13 +442,13 @@
address = "New York, NY",
year = "1988",
chapter = "3"
-};
+}
-% inbook with pages and note. The language field is not set to Russian
-% because the title is presented here in its translated, English, form.
-% From the May 2002 issue of "IEEE Transactions on Magnetics", page 1533,
-% reference #5.
+inbook with pages and note. The language field is not set to Russian
+because the title is presented here in its translated, English, form.
+From the May 2002 issue of "IEEE Transactions on Magnetics", page 1533,
+reference #5.
@inbook{IEEEexample:inbookpagesnote,
author = "B. K. Bul",
title = "Theory Principles and Design of Magnetic Circuits",
@@ -370,15 +457,15 @@
year = "1964",
pages = "464",
note = "(in Russian)"
-};
+}
-% incollection with author and editor
-% From the May 2002 issue of "Journal of Lightwave Technology",
-% page 807, reference #7.
+incollection with author and editor
+From the May 2002 issue of "Journal of Lightwave Technology",
+page 807, reference #7.
@incollection{IEEEexample:incollection,
author = "W. V. Sorin",
editor = "D. Derickson",
@@ -387,12 +474,12 @@
publisher = "Prentice-Hall",
address = "Englewood Cliffs, NJ",
year = "1998"
-};
+}
-% incollection with series
-% From the April 2000 issue of "IEEE Transactions on Communication",
-% page 609, reference #3.
+incollection with series
+From the April 2000 issue of "IEEE Transactions on Communication",
+page 609, reference #3.
@incollection{IEEEexample:incollectionwithseries,
author = "J. B. Anderson and K. Tepe",
title = "Properties of the Tailbiting {BCJR} Decoder",
@@ -402,12 +489,12 @@
address = "New York",
year = "2000"
-};
+}
-% incollection with author, editor, chapter and pages
-% From the January 2000 issue of "IEEE Transactions on Communications",
-% page 16, reference #9.
+incollection with author, editor, chapter and pages
+From the January 2000 issue of "IEEE Transactions on Communications",
+page 16, reference #9.
@incollection{IEEEexample:incollection_chpp,
author = "P. Hedelin and P. Knagenhjelm and M. Skoglund",
editor = "W. B. Kleijn and K. K. Paliwal",
@@ -418,17 +505,17 @@
year = "1995",
chapter = "10",
pages = "347-396"
-};
+}
-% incollection with a large number of authors, some authors/journals will
-% use et al. for so many names. IEEEtran.bst can be configured to do this
-% if desired, or "R. M. A. Dawson and others" can be used instead.
-% Note that IEEE may not include the publisher for incollection entries -
-% IEEEtran.bst will not issue a warning if the publisher is missing for
-% incollections - but other .bst files often will.
-% From the June 2002 issue of "IEEE Transactions on Electron Devices",
-% page 996, reference #12.
+incollection with a large number of authors, some authors/journals will
+use et al. for so many names. IEEEtran.bst can be configured to do this
+if desired, or "R. M. A. Dawson and others" can be used instead.
+Note that IEEE may not include the publisher for incollection entries -
+IEEEtran.bst will not issue a warning if the publisher is missing for
+incollections - but other .bst files often will.
+From the June 2002 issue of "IEEE Transactions on Electron Devices",
+page 996, reference #12.
@incollection{IEEEexample:incollectionmanyauthors,
author = "R. M. A. Dawson and Z. Shen and D. A. Furst and
S. Connor and J. Hsu and M. G. Kane and R. G. Stewart and
@@ -442,39 +529,40 @@
volume = "29",
year = "1998",
pages = "11-14"
-};
+}
-% A Motorola data book as a manual
-% It is somewhat unusual to include the data book part number.
-% in the title. It might be more correct to put this information
-% in the howpublished field instead.
-% From the December 2000 issue of "IEEE Transactions on Communications",
-% page 1986, reference #10.
+A Motorola data book as a manual
+It is somewhat unusual to include the data book part number.
+in the title. It might be more correct to put this information
+in the howpublished field instead.
+From the December 2000 issue of "IEEE Transactions on Communications",
+page 1986, reference #10.
@manual{IEEEexample:motmanual,
title = "{FLEXChip} Signal Processor ({MC68175/D})",
organization = "Motorola",
year = "1996"
-};
+}
+
-% same reference, but using IEEEtran's howpublished extension
+same reference, but using IEEEtran's howpublished extension
@manual{IEEEexample:motmanualhowpub,
title = "{FLEXChip} Signal Processor",
howpublished = "{MC68175/D}",
organization = "Motorola",
year = "1996"
-};
+}
-% conference paper with an address and days. Some journals capitalize the
-% letters in "Globecom", this one did not.
-% From the May 2002 issue of "IEEE Transactions on Communications",
-% page 697, reference #12.
+conference paper with an address and days. Some journals capitalize the
+letters in "Globecom", this one did not.
+From the May 2002 issue of "IEEE Transactions on Communications",
+page 697, reference #12.
@inproceedings{IEEEexample:confwithadddays,
author = "M. S. Yee and L. Hanzo",
title = "Radial Basis Function Decision Feedback Equaliser
@@ -484,14 +572,14 @@
month = dec # " 5--9,",
year = "1999",
pages = "2183-2187"
-};
+}
-% conference paper with volume number. A conference proceedings with a vol
-% number is a little uncommon, note that the vol number is placed
-% before the address in the formatted bibliography entry
-% From the April 2002 issue of "IEEE/ACM Transactions on Networking",
-% page 181, reference #26.
+conference paper with volume number. A conference proceedings with a vol
+number is a little uncommon, note that the vol number is placed
+before the address in the formatted bibliography entry
+From the April 2002 issue of "IEEE/ACM Transactions on Networking",
+page 181, reference #26.
@inproceedings{IEEEexample:confwithvolume,
author = "M. Yajnik and S. B. Moon and J. Kurose and D. Towsley",
title = "Measurement and Modeling of the Temporal Dependence in
@@ -502,15 +590,15 @@
month = mar,
year = "1999",
pages = "345-352"
-};
+}
-% conference paper with a paper number, the type field can be used to
-% override the word "paper", e.g., type = "postdeadline paper". A type
-% can be given even without a paper field.
-% Also, IEEEtran.bst can be configured to ignore paper numbers and types.
-% From the May 2002 issue of "Journal of Lightwave Technology",
-% page 807, reference #4.
+conference paper with a paper number, the type field can be used to
+override the word "paper", e.g., type = "postdeadline paper". A type
+can be given even without a paper field.
+Also, IEEEtran.bst can be configured to ignore paper numbers and types.
+From the May 2002 issue of "Journal of Lightwave Technology",
+page 807, reference #4.
@inproceedings{IEEEexample:confwithpaper,
author = "M. Wegmuller and J. P. von der Weid and P. Oberson
and N. Gisin",
@@ -520,13 +608,13 @@
year = "2000",
paper = "11.3.4",
pages = "109"
-};
+}
-% conference paper with a postdeadline type paper, the paper field is
-% optional.
-% From the August 2000 issue of "IEEE Photonics Technology Letters",
-% page 1087, reference #12.
+conference paper with a postdeadline type paper, the paper field is
+optional.
+From the August 2000 issue of "IEEE Photonics Technology Letters",
+page 1087, reference #12.
@inproceedings{IEEEexample:confwithpapertype,
author = "B. Mikkelsen and G. Raybon and R.-J. Essiambre and
K. Dreyer and Y. Su. and L. E. Nelson and J. E. Johnson
@@ -540,14 +628,14 @@
paper = "2-3",
type = "postdeadline paper",
pages = "28-29"
-};
+}
-% presented at a conference
-% intype overrides the default "in" and causes the booktitle not to be
-% emphasized (rendered in italics).
-% From the February 2002 issue of "IEEE/ACM Transactions on Networking",
-% page 163, reference #6.
+presented at a conference
+intype overrides the default "in" and causes the booktitle not to be
+emphasized (rendered in italics).
+From the February 2002 issue of "IEEE/ACM Transactions on Networking",
+page 163, reference #6.
@inproceedings{IEEEexample:presentedatconf,
author = "S. G. Finn and M. M{\'e}dard and R. A. Barry",
title = "A Novel Approach to Automatic Protection Switching
@@ -555,17 +643,17 @@
intype = "presented at the",
booktitle = "Proc. Int. Conf. Commun.",
year = "1997"
-};
+}
-% master's thesis, often the University name will be abbreviated and the
-% state or country will be included in the address. The type field can
-% used to override the default type "Master's thesis"
-% From the June 2002 issue of "IEEE Transactions on Microelectromechanical
-% Systems", page 186, reference #11.
+master's thesis, often the University name will be abbreviated and the
+state or country will be included in the address. The type field can
+used to override the default type "Master's thesis"
+From the June 2002 issue of "IEEE Transactions on Microelectromechanical
+Systems", page 186, reference #11.
@mastersthesis{IEEEexample:masters,
author = "Nin C. Loh",
title = "High-Resolution Micromachined Interferometric
@@ -573,12 +661,12 @@
school = "Massachusetts Institute of Technology",
address = "Cambridge",
year = "1992"
-};
+}
-% master's thesis with a type field
-% From the August 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 391, reference #12.
+master's thesis with a type field
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 391, reference #12.
@mastersthesis{IEEEexample:masterstype,
author = "A. Karnik",
title = "Performance of {TCP} Congestion Control with Rate
@@ -588,15 +676,15 @@
address = "Bangalore, India",
month = jan,
year = "1999"
-};
+}
-% Ph.D. dissertation with a URL field, the university is abbreviated
-% From the October 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 590, reference #11.
+Ph.D. dissertation with a URL field, the university is abbreviated
+From the October 2001 issue of "IEEE/ACM Transactions on Networking",
+page 590, reference #11.
@phdthesis{IEEEexample:phdurl,
author = "Q. Li",
title = "Delay Characterization and Performance Control of
@@ -606,15 +694,15 @@
month = may,
year = "2000",
url = "http://www.ece.udel.edu/~qli"
-};
+}
-% technical report
-% From the August 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 490, reference #15.
+technical report
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 490, reference #15.
@techreport{IEEEexample:techrep,
author = "R. Jain and K. K. Ramakrishnan and D. M. Chiu",
title = "Congestion Avoidance in Computer Networks with a
@@ -624,13 +712,13 @@
number = "DEC-TR-506",
month = aug,
year = "1987"
-};
+}
-% technical report with type
-% for those times when "Tech. Rep." needs to be modified
-% From the February 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 46, reference #8.
+technical report with type
+for those times when "Tech. Rep." needs to be modified
+From the February 2001 issue of "IEEE/ACM Transactions on Networking",
+page 46, reference #8.
@techreport{IEEEexample:techreptype,
author = "J. Padhye and V. Firoiu and D. Towsley",
title = "A Stochastic Model of {TCP} {R}eno Congestion Avoidance
@@ -640,14 +728,14 @@
type = "CMPSCI Tech. Rep.",
number = "99-02",
year = "1999"
-};
+}
-% technical report with type
-% for those times when "Tech. Rep." needs to be modified
-% This reference did not have an address.
-% From the January 2000 issue of "IEEE Transactions on Communications",
-% page 117, reference #6.
+technical report with type
+for those times when "Tech. Rep." needs to be modified
+This reference did not have an address.
+From the January 2000 issue of "IEEE Transactions on Communications",
+page 117, reference #6.
@techreport{IEEEexample:techreptypeii,
author = "D. Middleton and A. D. Spaulding",
title = "A Tutorial Review of Elements of Weak Signal Detection
@@ -658,30 +746,30 @@
number = "86-194",
month = may,
year = "1986"
-};
+}
-% an unpublished work
-% for unpublished types, the note field is required. IEEE usually
-% just uses the word "unpublished" for the note.
-% From the August 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 391, reference #16.
+an unpublished work
+for unpublished types, the note field is required. IEEE usually
+just uses the word "unpublished" for the note.
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 391, reference #16.
@unpublished{IEEEexample:unpublished,
author = "T. J. Ott and N. Aggarwal",
title = "{TCP} over {ATM}: {ABR} or {UBR}",
note = "Unpublished"
-};
+}
-% electronic with a howpublished information field
-% From the August 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 391, reference #7.
+electronic with a howpublished information field
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 391, reference #7.
@electronic{IEEEexample:electronhowinfo,
author = "V. Jacobson",
title = "Modified {TCP} Congestion Avoidance Algorithm",
@@ -689,24 +777,24 @@
url = "ftp://ftp.isi.edu/end2end/end2end-interest-1990.mail",
month = apr,
year = "1990"
-};
+}
-% electronic with a howpublished information field
-% From the August 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 418, reference #31.
+electronic with a howpublished information field
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 418, reference #31.
@electronic{IEEEexample:electronhowinfo2,
author = "V. Valloppillil and K. W. Ross",
title = "Cache Array Routing Protocol v1.1",
howpublished = "Internet draft",
url = "http://ds1.internic.net/internet-drafts/draft-vinod-carp-v1-03.txt",
year = "1998"
-};
+}
-% electronic with an organization and address
-% From the February 2002 issue of "IEEE/ACM Transactions on Networking",
-% page 114, reference #15.
+electronic with an organization and address
+From the February 2002 issue of "IEEE/ACM Transactions on Networking",
+page 114, reference #15.
@electronic{IEEEexample:electronorgadd,
author = "D. H. Lorenz and A. Orda",
title = "Optimal Partition of {QoS} Requirements on Unicast
@@ -716,22 +804,22 @@
url = "ftp://ftp.technion.ac.il/pub/supported/ee/Network/lor.mopq98.ps",
month = jul,
year = "1998"
-};
+}
-% U.S. patent
-% Use the type field to override the patent type. e.g.,
-% type = "Patent Application"
-% The address is that of the assignee. Note that IEEE does not
-% display the assignee, the address, and only displays one date.
-% (if year is not present, the filed dates are used.) However, this
-% information should be entered as other BibTeX styles may use it.
-% alternatively, nationality could be entered as "U.S."
-% From the April 2000 issue of "IEEE Transactions on Communications",
-% page 542, reference #6.
+U.S. patent
+Use the type field to override the patent type. e.g.,
+type = "Patent Application"
+The address is that of the assignee. Note that IEEE does not
+display the assignee, the address, and only displays one date.
+(if year is not present, the filed dates are used.) However, this
+information should be entered as other BibTeX styles may use it.
+alternatively, nationality could be entered as "U.S."
+From the April 2000 issue of "IEEE Transactions on Communications",
+page 542, reference #6.
@patent{IEEEexample:uspat,
author = "Ronald E. Sorace and Victor S. Reinhardt and
Steven A. Vaughn",
@@ -746,12 +834,12 @@
day = "16",
month = sep,
year = "1997"
-};
+}
-% Japanese Patent
-% From the April 2000 issue of "IEEE Transactions on Communications",
-% page 556, reference #6.
+Japanese Patent
+From the April 2000 issue of "IEEE Transactions on Communications",
+page 556, reference #6.
@patent{IEEEexample:jppat,
author = "U. Hideki",
title = "Quadrature Modulation Circuit",
@@ -760,16 +848,16 @@
day = "20",
month = may,
year = "1992"
-};
+}
-% French Patent request, the language field must be entered in lower case
-% as this is the option name Babel uses. The nationality field needs to be
-% capitalized. Because this is a patent request, the date filed fields are
-% used while the date fields are left empty/missing. In other countries,
-% the words "Patent Application", etc. are used instead.
-% From the April 2000 issue of "IEEE Transactions on Communications",
-% page 556, reference #9.
+French Patent request, the language field must be entered in lower case
+as this is the option name Babel uses. The nationality field needs to be
+capitalized. Because this is a patent request, the date filed fields are
+used while the date fields are left empty/missing. In other countries,
+the words "Patent Application", etc. are used instead.
+From the April 2000 issue of "IEEE Transactions on Communications",
+page 556, reference #9.
@patent{IEEEexample:frenchpatreq,
author = "F. Kowalik and M. Isard",
title = "Estimateur d'un D{\'e}faut de Fonctionnement
@@ -782,32 +870,32 @@
dayfiled = "11",
monthfiled = jan,
yearfiled = "1995"
-};
+}
-% a periodical
-% From the April 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 160, reference #1.
-% sort key is needed for sorting styles
+a periodical
+From the April 2001 issue of "IEEE/ACM Transactions on Networking",
+page 160, reference #1.
+sort key is needed for sorting styles
@periodical{IEEEexample:periodical,
title = IEEE_M_PCOM # ", Special Issue on Wireless {ATM}",
volume = "3",
month = aug,
year = "1996",
key = "IEEE"
-};
+}
-% standard, IEEE does not use the address for standards, but it is good
-% to provide one for BibTeX styles that use it.
-% From the August 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 451, reference #2.
+standard, IEEE does not use the address for standards, but it is good
+to provide one for BibTeX styles that use it.
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 451, reference #2.
@standard{IEEEexample:standard,
title = "Wireless {LAN} Medium Access Control {(MAC)} and
Physical Layer {(PHY)} Specification",
@@ -815,14 +903,14 @@
address = "Piscataway, NJ",
number = "802.11",
year = "1997"
-};
+}
-% standard with type and revision, the type overrides the word standard
-% (or std.). Here a standard number is not available and a revision number
-% is used.
-% From the August 2000 issue of "IEEE Photonics Technology Letters",
-% page 1048, reference #13.
+standard with type and revision, the type overrides the word standard
+(or std.). Here a standard number is not available and a revision number
+is used.
+From the August 2000 issue of "IEEE Photonics Technology Letters",
+page 1048, reference #13.
@standard{IEEEexample:standardproposed,
title = "Fiber Channel Physical Interface ({FC-PI})",
institution = "NCITS",
@@ -830,81 +918,81 @@
type = "Working Draft Proposed Standard",
revision = "5.2",
year = "1999"
-};
+}
-% standard draft as a misc with author
-% From the May 2002 issue of "IEEE Journal of Selected Areas in
-% Communication", page 725, reference #16.
+standard draft as a misc with author
+From the May 2002 issue of "IEEE Journal of Selected Areas in
+Communication", page 725, reference #16.
@misc{IEEEexample:draftasmisc,
author = "I. Widjaja and A. Elwalid",
title = "{MATE}: {MPLS} Adaptive Traffic Engineering",
howpublished = "IETF Draft",
year = "1999"
-};
+}
-% misc for a techreport like reference
-% techreport is not perfectly suitable because this entry lacks
-% an institution field
-% From the August 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 490, reference #22.
+misc for a techreport like reference
+techreport is not perfectly suitable because this entry lacks
+an institution field
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 490, reference #22.
@misc{IEEEexample:miscforum,
author = "L. Roberts",
title = "Enhanced Proportional Rate Control Algorithm {PRCA}",
howpublished = "{ATM} Forum Contribution 94-0735R1",
month = aug,
year = "1994"
-};
+}
-% misc for a white paper
-% From the August 2001 issue of "IEEE/ACM Transactions on Networking",
-% page 478, reference #4 - Note that the reference there (improperly?)
-% used the author field for "Cisco".
+misc for a white paper
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 478, reference #4 - Note that the reference there (improperly?)
+used the author field for "Cisco".
@misc{IEEEexample:whitepaper,
title = "Advanced {QoS} Services for the Intelligent Internet",
howpublished = "White Paper",
organization = "Cisco",
month = may,
year = "1997"
-};
+}
-% misc for a data sheet
-% From the November 2000 issue of "IEEE Photonics Technology Letters",
-% page 1551, reference #6.
+misc for a data sheet
+From the November 2000 issue of "IEEE Photonics Technology Letters",
+page 1551, reference #6.
@misc{IEEEexample:datasheet,
- title = "{PDCA12-70} data sheet",
+ title = "{PDCA12-70} Data Sheet",
organization = "Opto Speed SA",
address = "Mezzovico, Switzerland"
-};
+}
-% Other unusual references
+Other unusual references
-% a private communication as a misc entry type
-% sometimes the designation "personal communication" is used instead
-% From the June 2002 issue of "IEEE Transactions on Information Theory",
-% page 1725, reference #16.
+a private communication as a misc entry type
+sometimes the designation "personal communication" is used instead
+From the June 2002 issue of "IEEE Transactions on Information Theory",
+page 1725, reference #16.
@misc{IEEEexample:private,
author = "S. Konyagin",
howpublished = "private communication",
year = "1998"
-};
+}
-% an internet request for comments (RFC) as a misc entry type
-% It would also be nice to add a URL to these types of things.
-% RFCs can also be handled as electronic references.
-% From the April 2002 issue of "IEEE/ACM Transactions on Networking",
-% page 181, reference #14.
+an internet request for comments (RFC) as a misc entry type
+It would also be nice to add a URL to these types of things.
+RFCs can also be handled as electronic references.
+From the April 2002 issue of "IEEE/ACM Transactions on Networking",
+page 181, reference #14.
@misc{IEEEexample:miscrfc,
author = "K. K. Ramakrishnan and S. Floyd",
title = "A Proposal to Add Explicit Congestion
@@ -912,13 +1000,38 @@
howpublished = "RFC 2481",
month = jan,
year = "1999"
-};
+}
-% misc for a German regulation
-% In German, the first letters of nouns are capitalized, so we do so here.
-% From the June 2002 issue of "IEEE Journal in Selected Areas in
-% Communication", page 892, reference #9.
+a software package as a manual
+From the June 2002 issue of "IEEE/ASME Journal of Microelectromechanical
+Systems", page 205, reference #20.
+Sometimes they put the version/release information in the title.
+@manual{IEEEexample:softmanual,
+ title = "SaberDesigner Reference Manual",
+ organization = "Analogy, Inc.",
+ address = "Beaverton, OR",
+ year = "1998",
+ note = "Release 4.3"
+}
+
+
+a software package as an electronic reference
+From the February 2003 issue of "IEEE/ACM Transactions on Networking",
+page 46, reference #24. If there is no author or organization, a sorting
+key is required for sorting styles. It might be a good idea to include
+month and year fields as well.
+@electronic{IEEEexample:softonline,
+ title = "Ucb/lbnl/vint Network Simulator---ns (Version 2)",
+ url = "http://www-mash.cs.berkeley.edu/ns/",
+ key = "ns"
+}
+
+
+misc for a German regulation
+In German, the first letters of nouns are capitalized, so we do so here.
+From the June 2002 issue of "IEEE Journal in Selected Areas in
+Communication", page 892, reference #9.
@misc{IEEEexample:miscgermanreg,
title = "{M}essung von {S}t{\"o}rfeldern an {A}nlagen
und {L}eitungen der {T}elekommunikation im
@@ -927,16 +1040,16 @@
howpublished = "{M}e{\ss}vorschrift {R}eg {TP} {MV} 05",
organization = "Regulierungsbeh{\"o}rde f{\"u}r {T}elekommunikation und
{P}ost ({R}eg {TP})"
-};
+}
-% Ways to handle things like CCSDS's Blue Books
-% journal article with a URL. However, this is not a very good approach
-% because the Blue Books are not really journals and the author field has
-% to be abused.
-% From the June 2002 issue of "IEEE Transactions on Information Theory",
-% page 1461, reference #7.
+Ways to handle things like CCSDS's Blue Books
+journal article with a URL. However, this is not a very good approach
+because the Blue Books are not really journals and the author field has
+to be abused.
+From the June 2002 issue of "IEEE Transactions on Information Theory",
+page 1461, reference #7.
@article{IEEEexample:bluebookarticle,
author = "{Consulative Committee for Space Data Systems (CCSDS)}",
title = "Telemetry Channel Coding",
@@ -944,26 +1057,27 @@
number = "4",
year = "1999",
url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf"
-};
+}
-% CCSDS's Blue Book handled as a book
-% However, it is not a good idea to have to use the author field for
-% an organization (done here because the book entry type requires an
-% author field).
+CCSDS's Blue Book handled as a book
+However, it is not a good idea to have to use the author field for
+an organization (done here because the book entry type requires an
+author field).
@book{IEEEexample:bluebookbook,
author = "{Consulative Committee for Space Data Systems (CCSDS)}",
title = "Telemetry Channel Coding",
series = "Blue Book",
number = "4",
- publisher = "CCSDS",
- address = "Newport Beach, CA",
+ publisher = "{CCSDS}",
+ address = "Newport Beach, {CA}",
year = "1999",
url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf"
-};
+}
-% CCSDS's Blue Book handled as a manual
-% This is a much better approach, but uses the howpublished field.
+
+CCSDS's Blue Book handled as a manual
+This is a much better approach, but uses the howpublished field.
@manual{IEEEexample:bluebookmanual,
title = "Telemetry Channel Coding",
howpublished = "ser. Blue Book, No. 4",
@@ -971,14 +1085,14 @@
address = "Newport Beach, CA",
year = "1999",
url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf"
-};
+}
-% CCSDS's Blue Book handled as a standard
-% Probably the best approach for this particular case because the work
-% is standard related. Note that IEEE does not display the address for
-% standards.
+CCSDS's Blue Book handled as a standard
+Probably the best approach for this particular case because the work
+is standard related. Note that IEEE does not display the address for
+standards.
@standard{IEEEexample:bluebookstandard,
title = "Telemetry Channel Coding",
howpublished = "ser. Blue Book, No. 4",
@@ -989,67 +1103,76 @@
month = May,
year = "1999",
url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf"
-};
+}
-
-% An example of a IEEEtran control entry which can change some IEEEtran.bst
-% settings. An entry like this must be cited via \bstctlcite{} command
-% before the first real \cite{}. The same entry key cannot be called twice
-% (just like multiple \cite{} of the same entry key place only one entry
-% in the bibliography.)
-% The available control fields are:
-%
-% CTLuse_article_number
-% "no" turns off the display of the number for articles.
-% "yes" enables
-%
-% CTLuse_paper
-% "no" turns off the display of the paper and type fields in inproceedings.
-% "yes" enables
-%
-% CTLuse_forced_etal
-% "no" turns off the forced use of "et al."
-% "yes" enables
-%
-% CTLmax_names_forced_etal
-% The maximum number of names that can be present beyond which an "et al."
-% usage is forced. Be sure that CTLnames_show_etal (below)
-% is not greater than this value!
-%
-% CTLnames_show_etal
-% The number of names that will be shown with a forced "et al.".
-% Must be less than or equal to CTLmax_names_forced_etal
-%
-% CTLuse_alt_spacing
-% "no" turns off the alternate interword spacing for entries with URLs.
-% "yes" enables
-%
-% CTLalt_stretch_factor
-% If alternate interword spacing for entries with URLs is enabled, this is
-% the interword spacing stretch factor that will be used. For example, the
-% default "4" here means that the interword spacing in entries with URLs can
-% stretch to four times normal. Does not have to be an integer.
-%
-% CTLdash_repeated_names
-% "no" turns off the "dashification" of repeated (i.e., identical to those
-% of the previous entry) names. IEEE normally does this.
-% "yes" enables
-%
-% CTLname_format_string
-% The name format control string as explained in the BibTeX style hacking
-% guide.
-% IEEE style "{f.~}{vv~}{ll}{, jj}" is the default,
-%
-% CTL_name_latex_cmd
-% A LaTeX command that each name will be fed to (e.g., "\textsc").
-% Leave empty if no special font is desired for the names.
-% The default is empty.
-%
-% Those fields that are not to be changed can be left out or empty.
+
+
+
+An example of a IEEEtran control entry which can change some IEEEtran.bst
+settings. An entry like this must be cited via \bstctlcite{} command
+before the first real \cite{}. The same entry key cannot be called twice
+(just like multiple \cite{} of the same entry key place only one entry
+in the bibliography.)
+The available control fields are:
+
+CTLuse_article_number
+"no" turns off the display of the number for articles.
+"yes" enables
+
+CTLuse_paper
+"no" turns off the display of the paper and type fields in inproceedings.
+"yes" enables
+
+CTLuse_forced_etal
+"no" turns off the forced use of "et al."
+"yes" enables
+
+CTLmax_names_forced_etal
+The maximum number of names that can be present beyond which an "et al."
+usage is forced. Be sure that CTLnames_show_etal (below)
+is not greater than this value!
+
+CTLnames_show_etal
+The number of names that will be shown with a forced "et al.".
+Must be less than or equal to CTLmax_names_forced_etal
+
+CTLuse_alt_spacing
+"no" turns off the alternate interword spacing for entries with URLs.
+"yes" enables
+
+CTLalt_stretch_factor
+If alternate interword spacing for entries with URLs is enabled, this is
+the interword spacing stretch factor that will be used. For example, the
+default "4" here means that the interword spacing in entries with URLs can
+stretch to four times normal. Does not have to be an integer.
+
+CTLdash_repeated_names
+"no" turns off the "dashification" of repeated (i.e., identical to those
+of the previous entry) names. IEEE normally does this.
+"yes" enables
+
+CTLname_format_string
+The name format control string as explained in the BibTeX style hacking
+guide.
+IEEE style "{f.~}{vv~}{ll}{, jj}" is the default,
+
+CTLname_latex_cmd
+A LaTeX command that each name will be fed to (e.g., "\textsc").
+Leave empty if no special font is desired for the names.
+The default is empty.
+
+CTLname_url_prefix
+The prefix text used before URLs.
+The default is "[Online]. Available:" A space will be inserted after this
+text. If this space is not wanted, just use \relax at the end of the
+prefix text.
+
+
+Those fields that are not to be changed can be left out.
@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLuse_article_number = "yes",
CTLuse_paper = "yes",
@@ -1060,8 +1183,8 @@
CTLalt_stretch_factor = "4",
CTLdash_repeated_names = "yes",
CTLname_format_string = "{f.~}{vv~}{ll}{, jj}",
- CTLname_latex_cmd = ""
-};
-
+ CTLname_latex_cmd = "",
+ CTLname_url_prefix = "[Online]. Available:"
+}
diff --git a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEfull.bib b/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEfull.bib
index 0372b540505..8f07c8c7068 100644
--- a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEfull.bib
+++ b/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEfull.bib
@@ -1,97 +1,102 @@
-%%
-%% IEEEfull.bib
-%%
-%% BibTeX bibliography string definitions of the FULL titles of
-%% IEEE journals and magazines
-%%
-%% NOTE: This text file uses UNIX line feed conventions. When (human)
-%% reading this file on other platforms, you may have to use a text
-%% editor that can handle lines terminated by the UNIX line feed
-%% character (0x0A).
-%%
-%% This file is designed for bibliography styles that require
-%% full-length titles and is not for use in bibliographies that
-%% abbreviate titles.
-%%
-%% Version 1.10 (2003/04/02)
-%%
-%% Composed by Michael Shell
-%%
-%% See:
-%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/
-%% for latest version and current contact information.
-%%
-%% Special thanks to Laura Hyslop of IEEE for her help in obtaining the
-%% information needed to compile this file. Also, Volker Kuhlmann kindly
-%% provided some corrections and additions.
-%%
-%%**********************************************************************
-%% Legal Notice:
-%% This code is offered as-is without any warranty either expressed or
-%% implied; without even the implied warranty of MERCHANTABILITY or
-%% FITNESS FOR A PARTICULAR PURPOSE!
-%% User assumes all risk.
-%% In no event shall IEEE or any contributor to this code be liable for
-%% any damages or losses, including, but not limited to, incidental,
-%% consequential, or any other damages, resulting from the use or misuse
-%% of any information contained here.
-%%
-%% This code is distributed under the Perl Artistic License
-%% ( http://language.perl.com/misc/Artistic.html )
-%% and may be freely used, distributed and modified - subject to the
-%% constraints therein.
-%% Retain all contribution notices, credits and disclaimers.
-%%
-%% All comments are the opinions of their respective authors and are not
-%% necessarily endorsed by the IEEE.
-%%**********************************************************************
-%
-%
-% USAGE:
-%
-% \bibliographystyle{mybstfile}
-% \bibliography{IEEEfull,mybibfile}
-%
-% where the IEEE titles in the .bib database entries use the strings
-% defined here. e.g.,
-%
-%
-% journal = IEEE_J_AC,
-%
-%
-% to yield "{IEEE} Transactions on Automatic Control"
-%
-%
-% WARNING: IEEE uses abbreviated journal titles in their bibliographies!
-% Because this file provides the full titles, you should NOT use this file
-% for work that is to be submitted to the IEEE.
-%
-% For IEEE work, you should use the abbreviated titles provided in the
-% companion file, IEEEabrv.bib.
-%
-%
-% ** NOTES **
-%
-% 1. Journals have been grouped according to subject in order to make it
-% easier to locate and extract the definitions for related journals -
-% as most works use references that are confined to a single topic.
-% Magazines are listed in straight alphabetical order.
-%
-% 2. String names are closely based on IEEE's own internal acronyms.
-%
-% 3. Older, out-of-print IEEE titles are included (but not including titles
-% dating prior to IEEE's formation from the IRE and AIEE in 1963).
-
-
-
-
-
-%%%%%%%%%%%%%%%%%%%
-%% IEEE Journals %%
-%%%%%%%%%%%%%%%%%%%
-
-
-% aerospace and military
+
+IEEEfull.bib
+V1.12 (2007/01/11)
+Copyright (c) 2002-2007 by Michael Shell
+See: http://www.michaelshell.org/
+for current contact information.
+
+BibTeX bibliography string definitions of the FULL titles of
+IEEE journals and magazines and online publications.
+
+This file is designed for bibliography styles that require
+full-length titles and is not for use in bibliographies that
+abbreviate titles.
+
+Support sites:
+http://www.michaelshell.org/tex/ieeetran/
+http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
+and/or
+http://www.ieee.org/
+
+Special thanks to Laura Hyslop and ken Rawson of IEEE for their help
+in obtaining the information needed to compile this file. Also,
+Volker Kuhlmann and Moritz Borgmann kindly provided some corrections
+and additions.
+
+*************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+
+File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
+ IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
+ IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
+*************************************************************************
+
+
+USAGE:
+
+\bibliographystyle{mybstfile}
+\bibliography{IEEEfull,mybibfile}
+
+where the IEEE titles in the .bib database entries use the strings
+defined here. e.g.,
+
+
+ journal = IEEE_J_AC,
+
+
+to yield "{IEEE} Transactions on Automatic Control"
+
+
+WARNING: IEEE uses abbreviated journal titles in their bibliographies!
+Because this file provides the full titles, you should NOT use this file
+for work that is to be submitted to the IEEE.
+
+For IEEE work, you should use the abbreviated titles provided in the
+companion file, IEEEabrv.bib.
+
+
+** NOTES **
+
+ 1. Journals have been grouped according to subject in order to make it
+ easier to locate and extract the definitions for related journals -
+ as most works use references that are confined to a single topic.
+ Magazines are listed in straight alphabetical order.
+
+ 2. String names are closely based on IEEE's own internal acronyms.
+
+ 3. Older, out-of-print IEEE titles are included (but not including titles
+ dating prior to IEEE's formation from the IRE and AIEE in 1963).
+
+
+
+
+
+
+IEEE Journals
+
+
+
+aerospace and military
@STRING{IEEE_J_AES = "{IEEE} Transactions on Aerospace and Electronic Systems"}
@STRING{IEEE_J_ANE = "{IEEE} Transactions on Aerospace and Navigational Electronics"}
@STRING{IEEE_J_ANNE = "{IEEE} Transactions on Aeronautical and Navigational Electronics"}
@@ -101,14 +106,14 @@
-% autos, transportation and vehicles (non-aerospace)
+autos, transportation and vehicles (non-aerospace)
@STRING{IEEE_J_ITS = "{IEEE} Transactions on Intelligent Transportation Systems"}
@STRING{IEEE_J_VT = "{IEEE} Transactions on Vehicular Technology"}
@STRING{IEEE_J_VC = "{IEEE} Transactions on Vehicular Communications"}
-% circuits, signals, systems, audio and controls
+circuits, signals, systems, audio and controls
@STRING{IEEE_J_SPL = "{IEEE} Signal Processing Letters"}
@STRING{IEEE_J_ASSP = "{IEEE} Transactions on Acoustics, Speech, and Signal Processing"}
@STRING{IEEE_J_AU = "{IEEE} Transactions on Audio"}
@@ -118,6 +123,9 @@
@STRING{IEEE_J_CASVT = "{IEEE} Transactions on Circuits and Systems for Video Technology"}
@STRING{IEEE_J_CASI = "{IEEE} Transactions on Circuits and Systems---Part {I}: Fundamental Theory and Applications"}
@STRING{IEEE_J_CASII = "{IEEE} Transactions on Circuits and Systems---Part {II}: Analog and Digital Signal Processing"}
+in 2004 CASI and CASII renamed part title to CASI_RP and CASII_EB, respectively.
+@STRING{IEEE_J_CASI_RP = "{IEEE} Transactions on Circuits and Systems---Part {I}: Regular Papers"}
+@STRING{IEEE_J_CASII_EB = "{IEEE} Transactions on Circuits and Systems---Part {II}: Express Briefs"}
@STRING{IEEE_J_CT = "{IEEE} Transactions on Circuit Theory"}
@STRING{IEEE_J_CST = "{IEEE} Transactions on Control Systems Technology"}
@STRING{IEEE_J_SP = "{IEEE} Transactions on Signal Processing"}
@@ -128,7 +136,7 @@
-% communications
+communications
@STRING{IEEE_J_COML = "{IEEE} Communications Letters"}
@STRING{IEEE_J_JSAC = "{IEEE} Journal on Selected Areas in Communications"}
@STRING{IEEE_J_COM = "{IEEE} Transactions on Communications"}
@@ -137,7 +145,7 @@
-% components, packaging and manufacturing
+components, packaging and manufacturing
@STRING{IEEE_J_ADVP = "{IEEE} Transactions on Advanced Packaging"}
@STRING{IEEE_J_CHMT = "{IEEE} Transactions on Components, Hybrids and Manufacturing Technology"}
@STRING{IEEE_J_CPMTA = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {A}"}
@@ -153,23 +161,26 @@
-% CAD
+CAD
@STRING{IEEE_J_TCAD = "{IEEE} Journal on Technology in Computer Aided Design"}
@STRING{IEEE_J_CAD = "{IEEE} Transactions on Computer-Aided Design of Integrated Circuits and Systems"}
-% coding, data, information, knowledge
+coding, data, information, knowledge
@STRING{IEEE_J_IT = "{IEEE} Transactions on Information Theory"}
@STRING{IEEE_J_KDE = "{IEEE} Transactions on Knowledge and Data Engineering"}
-% computers, computation, networking and software
+computers, computation, networking and software
@STRING{IEEE_J_C = "{IEEE} Transactions on Computers"}
+@STRING{IEEE_J_CAL = "{IEEE} Computer Architecture Letters"}
+@STRING{IEEE_J_DSC = "{IEEE} Transactions on Dependable and Secure Computing"}
@STRING{IEEE_J_ECOMP = "{IEEE} Transactions on Electronic Computers"}
@STRING{IEEE_J_EVC = "{IEEE} Transactions on Evolutionary Computation"}
@STRING{IEEE_J_FUZZ = "{IEEE} Transactions on Fuzzy Systems"}
+@STRING{IEEE_J_IFS = "{IEEE} Transactions on Information Forensics and Security"}
@STRING{IEEE_J_MC = "{IEEE} Transactions on Mobile Computing"}
@STRING{IEEE_J_NET = "{IEEE/ACM} Transactions on Networking"}
@STRING{IEEE_J_NN = "{IEEE} Transactions on Neural Networks"}
@@ -178,19 +189,24 @@
-% computer graphics, imaging, and multimedia
+computer graphics, imaging, and multimedia
+@STRING{IEEE_J_JDT = "{IEEE/OSA} Journal of Display Technology"}
@STRING{IEEE_J_IP = "{IEEE} Transactions on Image Processing"}
@STRING{IEEE_J_MM = "{IEEE} Transactions on Multimedia"}
@STRING{IEEE_J_VCG = "{IEEE} Transactions on Visualization and Computer Graphics"}
-% cybernetics, ergonomics, robots, man-machine, and automation
+cybernetics, ergonomics, robots, man-machine, and automation
+@STRING{IEEE_J_ASE = "{IEEE} Transactions on Automation Science and Engineering"}
@STRING{IEEE_J_JRA = "{IEEE} Journal of Robotics and Automation"}
@STRING{IEEE_J_HFE = "{IEEE} Transactions on Human Factors in Electronics"}
@STRING{IEEE_J_MMS = "{IEEE} Transactions on Man-Machine Systems"}
@STRING{IEEE_J_PAMI = "{IEEE} Transactions on Pattern Analysis and Machine Intelligence"}
+in 1989 JRA became RA
+in August 2004, RA split into ASE and RO
@STRING{IEEE_J_RA = "{IEEE} Transactions on Robotics and Automation"}
+@STRING{IEEE_J_RO = "{IEEE} Transactions on Robotics"}
@STRING{IEEE_J_SMC = "{IEEE} Transactions on Systems, Man, and Cybernetics"}
@STRING{IEEE_J_SMCA = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {A}: Systems and Humans"}
@STRING{IEEE_J_SMCB = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {B}: Cybernetics"}
@@ -199,14 +215,15 @@
-% earth, wind, fire and water
+earth, wind, fire and water
@STRING{IEEE_J_GE = "{IEEE} Transactions on Geoscience Electronics"}
@STRING{IEEE_J_GRS = "{IEEE} Transactions on Geoscience and Remote Sensing"}
+@STRING{IEEE_J_GRSL = "{IEEE} Geoscience and Remote Sensing Letters"}
@STRING{IEEE_J_OE = "{IEEE} Journal of Oceanic Engineering"}
-% education, engineering, history, IEEE, professional
+education, engineering, history, IEEE, professional
@STRING{IEEE_J_CJECE = "Canadian Journal of Electrical and Computer Engineering"}
@STRING{IEEE_J_PROC = "Proceedings of the {IEEE}"}
@STRING{IEEE_J_EDU = "{IEEE} Transactions on Education"}
@@ -216,7 +233,7 @@
-% electromagnetics, antennas, EMI, magnetics and microwave
+electromagnetics, antennas, EMI, magnetics and microwave
@STRING{IEEE_J_AWPL = "{IEEE} Antennas and Wireless Propagation Letters"}
@STRING{IEEE_J_MGWL = "{IEEE} Microwave and Guided Wave Letters"}
@STRING{IEEE_J_MWCL = "{IEEE} Microwave and Wireless Components Letters"}
@@ -229,8 +246,9 @@
-% energy and power
+energy and power
@STRING{IEEE_J_EC = "{IEEE} Transactions on Energy Conversion"}
+@STRING{IEEE_J_PEL = "{IEEE} Power Electronics Letters"}
@STRING{IEEE_J_PWRAS = "{IEEE} Transactions on Power Apparatus and Systems"}
@STRING{IEEE_J_PWRD = "{IEEE} Transactions on Power Delivery"}
@STRING{IEEE_J_PWRE = "{IEEE} Transactions on Power Electronics"}
@@ -238,7 +256,7 @@
-% industrial, commercial and consumer
+industrial, commercial and consumer
@STRING{IEEE_J_APPIND = "{IEEE} Transactions on Applications and Industry"}
@STRING{IEEE_J_BC = "{IEEE} Transactions on Broadcasting"}
@STRING{IEEE_J_BCTV = "{IEEE} Transactions on Broadcast and Television Receivers"}
@@ -247,49 +265,51 @@
@STRING{IEEE_J_IECI = "{IEEE} Transactions on Industrial Electronics and Control Instrumentation"}
@STRING{IEEE_J_IA = "{IEEE} Transactions on Industry Applications"}
@STRING{IEEE_J_IGA = "{IEEE} Transactions on Industry and General Applications"}
+@STRING{IEEE_J_IINF = "{IEEE} Transactions on Industrial Informatics"}
+@STRING{IEEE_J_PSE = "{IEEE} Journal of Product Safety Engineering"}
-% instrumentation and measurement
+instrumentation and measurement
@STRING{IEEE_J_IM = "{IEEE} Transactions on Instrumentation and Measurement"}
-% insulation and materials
+insulation and materials
@STRING{IEEE_J_JEM = "{IEEE/TMS} Journal of Electronic Materials"}
@STRING{IEEE_J_DEI = "{IEEE} Transactions on Dielectrics and Electrical Insulation"}
@STRING{IEEE_J_EI = "{IEEE} Transactions on Electrical Insulation"}
-% mechanical
+mechanical
@STRING{IEEE_J_MECH = "{IEEE/ASME} Transactions on Mechatronics"}
@STRING{IEEE_J_MEMS = "{IEEE/ASME} Journal of Microelectromechanical Systems"}
-% medical and biological
+medical and biological
@STRING{IEEE_J_BME = "{IEEE} Transactions on Biomedical Engineering"}
-% Note: The B-ME journal later dropped the hyphen and became the BME.
+Note: The B-ME journal later dropped the hyphen and became the BME.
@STRING{IEEE_J_B-ME = "{IEEE} Transactions on Bio-Medical Engineering"}
@STRING{IEEE_J_BMELC = "{IEEE} Transactions on Bio-Medical Electronics"}
+@STRING{IEEE_J_CBB = "{IEEE/ACM} Transactions on Computational Biology and Bioinformatics"}
@STRING{IEEE_J_ITBM = "{IEEE} Transactions on Information Technology in Biomedicine"}
@STRING{IEEE_J_ME = "{IEEE} Transactions on Medical Electronics"}
@STRING{IEEE_J_MI = "{IEEE} Transactions on Medical Imaging"}
-@STRING{IEEE_J_MCTE = "{IEEE} Transactions on Molecular, Cellular and Tissue Engineering"}
@STRING{IEEE_J_NB = "{IEEE} Transactions on NanoBioscience"}
@STRING{IEEE_J_NSRE = "{IEEE} Transactions on Neural Systems and Rehabilitation Engineering"}
@STRING{IEEE_J_RE = "{IEEE} Transactions on Rehabilitation Engineering"}
-% optics, lightwave and photonics
+optics, lightwave and photonics
@STRING{IEEE_J_PTL = "{IEEE} Photonics Technology Letters"}
@STRING{IEEE_J_JLT = "{IEEE/OSA} Journal of Lightwave Technology"}
-% physics, electrons, nanotechnology, nuclear and quantum electronics
+physics, electrons, nanotechnology, nuclear and quantum electronics
@STRING{IEEE_J_EDL = "{IEEE} Electron Device Letters"}
@STRING{IEEE_J_JQE = "{IEEE} Journal of Quantum Electronics"}
@STRING{IEEE_J_JSTQE = "{IEEE} Journal of Selected Topics in Quantum Electronics"}
@@ -300,13 +320,13 @@
-% reliability
+reliability
@STRING{IEEE_J_DMR = "{IEEE} Transactions on Device and Materials Reliability"}
@STRING{IEEE_J_R = "{IEEE} Transactions on Reliability"}
-% semiconductors, superconductors, electrochemical and solid state
+semiconductors, superconductors, electrochemical and solid state
@STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochemical and Solid-State Letters"}
@STRING{IEEE_J_JSSC = "{IEEE} Journal of Solid-State Circuits"}
@STRING{IEEE_J_ASC = "{IEEE} Transactions on Applied Superconductivity"}
@@ -314,21 +334,21 @@
-% sensors
+sensors
@STRING{IEEE_J_SENSOR = "{IEEE} Sensors Journal"}
-% VLSI
+VLSI
@STRING{IEEE_J_VLSI = "{IEEE} Transactions on Very Large Scale Integration ({VLSI}) Systems"}
-%%%%%%%%%%%%%%%%%%%%
-%% IEEE Magazines %%
-%%%%%%%%%%%%%%%%%%%%
+
+IEEE Magazines
+
@STRING{IEEE_M_AES = "{IEEE} Aerospace and Electronics Systems Magazine"}
@@ -339,7 +359,8 @@
@STRING{IEEE_M_CAS = "{IEEE} Circuits and Systems Magazine"}
@STRING{IEEE_M_COM = "{IEEE} Communications Magazine"}
@STRING{IEEE_M_COMSOC = "{IEEE} Communications Society Magazine"}
-% CSEM changed to CSE in 1999
+@STRING{IEEE_M_CIM = "{IEEE} Computational Intelligence Magazine"}
+CSEM changed to CSE in 1999
@STRING{IEEE_M_CSE = "{IEEE} Computing in Science and Engineering"}
@STRING{IEEE_M_CSEM = "{IEEE} Computational Science and Engineering Magazine"}
@STRING{IEEE_M_C = "{IEEE} Computer"}
@@ -349,6 +370,7 @@
@STRING{IEEE_M_CS = "{IEEE} Control Systems Magazine"}
@STRING{IEEE_M_DTC = "{IEEE} Design and Test of Computers"}
@STRING{IEEE_M_EI = "{IEEE} Electrical Insulation Magazine"}
+@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnology Review"}
@STRING{IEEE_M_EMB = "{IEEE} Engineering in Medicine and Biology Magazine"}
@STRING{IEEE_M_EMR = "{IEEE} Engineering Management Review"}
@STRING{IEEE_M_EXP = "{IEEE} Expert"}
@@ -363,19 +385,35 @@
@STRING{IEEE_M_NET = "{IEEE} Network"}
@STRING{IEEE_M_PCOM = "{IEEE} Personal Communications Magazine"}
@STRING{IEEE_M_POT = "{IEEE} Potentials"}
-% CAP and PER merged to form PE in 2003
+CAP and PER merged to form PE in 2003
@STRING{IEEE_M_PE = "{IEEE} Power and Energy Magazine"}
@STRING{IEEE_M_PER = "{IEEE} Power Engineering Review"}
+@STRING{IEEE_M_PVC = "{IEEE} Pervasive Computing"}
@STRING{IEEE_M_RA = "{IEEE} Robotics and Automation Magazine"}
+@STRING{IEEE_M_SAP = "{IEEE} Security and Privacy"}
@STRING{IEEE_M_SP = "{IEEE} Signal Processing Magazine"}
@STRING{IEEE_M_S = "{IEEE} Software"}
@STRING{IEEE_M_SPECT = "{IEEE} Spectrum"}
@STRING{IEEE_M_TS = "{IEEE} Technology and Society Magazine"}
+@STRING{IEEE_M_VT = "{IEEE} Vehicular Technology Magazine"}
@STRING{IEEE_M_WC = "{IEEE} Wireless Communications Magazine"}
@STRING{IEEE_M_TODAY = "Today's Engineer"}
-%--
-%EOF
+
+
+IEEE Online Publications
+
+
+
+@STRING{IEEE_O_CSTO = "{IEEE} Communications Surveys and Tutorials"}
+@STRING{IEEE_O_DSO = "{IEEE} Distributed Systems Online"}
+
+
+
+
+
+--
+EOF
diff --git a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst
index b2c7edc3820..53fbc030aae 100644
--- a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst
+++ b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst
@@ -1,9 +1,9 @@
%%
%% IEEEtran.bst
%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted)
-%% Version 1.11 (2003/04/02)
+%% Version 1.12 (2007/01/11)
%%
-%% Copyright (c) 2003 Michael Shell
+%% Copyright (c) 2003-2007 Michael Shell
%%
%% Original starting code base and algorithms obtained from the output of
%% Patrick W. Daly's makebst package as well as from prior versions of
@@ -12,52 +12,82 @@
%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
%%
-%%
-%% See:
-%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/
-%% for latest version and current contact information.
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
+%% and/or
+%% http://www.ieee.org/
%%
%% For use with BibTeX version 0.99a or later
%%
%% This is a numerical citation style.
%%
-%%**********************************************************************
+%%*************************************************************************
%% Legal Notice:
%% This code is offered as-is without any warranty either expressed or
%% implied; without even the implied warranty of MERCHANTABILITY or
-%% FITNESS FOR A PARTICULAR PURPOSE!
+%% FITNESS FOR A PARTICULAR PURPOSE!
%% User assumes all risk.
%% In no event shall IEEE or any contributor to this code be liable for
%% any damages or losses, including, but not limited to, incidental,
%% consequential, or any other damages, resulting from the use or misuse
%% of any information contained here.
%%
-%% This code is distributed under the Perl Artistic License
-%% ( http://language.perl.com/misc/Artistic.html )
-%% and may be freely used, distributed and modified - subject to the
-%% constraints therein.
-%% Retain all contribution notices, credits and disclaimers.
-%%
%% All comments are the opinions of their respective authors and are not
%% necessarily endorsed by the IEEE.
-%%**********************************************************************
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
+%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
+%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
+%%*************************************************************************
%
%
% Changelog:
-%
+%
% 1.00 (2002/08/13) Initial release
-%
+%
% 1.10 (2002/09/27)
% 1. Corrected minor bug for improperly formed warning message when a
% book was not given a title. Thanks to Ming Kin Lai for reporting this.
% 2. Added support for CTLname_format_string and CTLname_latex_cmd fields
% in the BST control entry type.
-%
+%
% 1.11 (2003/04/02)
% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks
% to Ming Kin Lai for reporting this.
-
-
+%
+% 1.12 (2007/01/11)
+% 1. Fixed bug with unwanted comma before "et al." when an entry contained
+% more than two author names. Thanks to Pallav Gupta for reporting this.
+% 2. Fixed bug with anomalous closing quote in tech reports that have a
+% type, but without a number or address. Thanks to Mehrdad Mirreza for
+% reporting this.
+% 3. Use braces in \providecommand in begin.bib to better support
+% latex2html. TeX style length assignments OK with recent versions
+% of latex2html - 1.71 (2002/2/1) or later is strongly recommended.
+% Use of the language field still causes trouble with latex2html.
+% Thanks to Federico Beffa for reporting this.
+% 4. Added IEEEtran.bst ID and version comment string to .bbl output.
+% 5. Provide a \BIBdecl hook that allows the user to execute commands
+% just prior to the first entry.
+% 6. Use default urlstyle (is using url.sty) of "same" rather than rm to
+% better work with a wider variety of bibliography styles.
+% 7. Changed month abbreviations from Sept., July and June to Sep., Jul.,
+% and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann
+% for reporting this.
+% 8. Control entry types should not be considered when calculating longest
+% label width.
+% 9. Added alias www for electronic/online.
+% 10. Added CTLname_url_prefix control entry type.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -70,10 +100,11 @@
% NOTE: The recommended LaTeX command to invoke a control entry type is:
%
%\makeatletter
-%\def\bstctlcite#1{\@bsphack
-% \@for\@citeb:=#1\do{%
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+% \@for\@citeb:=#2\do{%
% \edef\@citeb{\expandafter\@firstofone\@citeb}%
-% \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi}%
+% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
% \@esphack}
%\makeatother
%
@@ -140,6 +171,10 @@ FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
FUNCTION {default.name.latex.cmd}{ "" }
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
% #0 turns off the terminal startup banner/completed message so as to
@@ -154,9 +189,9 @@ FUNCTION {is.print.banners.to.terminal} { #1 }
%% FILE VERSION AND BANNER %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-FUNCTION{bst.file.version} { "1.11" }
-FUNCTION{bst.file.date} { "2003/04/02" }
-FUNCTION{bst.file.website} { "http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/" }
+FUNCTION{bst.file.version} { "1.12" }
+FUNCTION{bst.file.date} { "2007/01/11" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
FUNCTION {banner.message}
{ is.print.banners.to.terminal
@@ -212,7 +247,6 @@ FUNCTION {bbl.standard}{ "Std." }
FUNCTION {bbl.techrep}{ "Tech. Rep." }
FUNCTION {bbl.mthesis}{ "Master's thesis" }
FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
-FUNCTION {bbl.urlprefix}{ "[Online]. Available:" }
FUNCTION {bbl.st}{ "st" }
FUNCTION {bbl.nd}{ "nd" }
FUNCTION {bbl.rd}{ "rd" }
@@ -241,10 +275,10 @@ MACRO {feb} {"Feb."}
MACRO {mar} {"Mar."}
MACRO {apr} {"Apr."}
MACRO {may} {"May"}
-MACRO {jun} {"June"}
-MACRO {jul} {"July"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
MACRO {aug} {"Aug."}
-MACRO {sep} {"Sept."}
+MACRO {sep} {"Sep."}
MACRO {oct} {"Oct."}
MACRO {nov} {"Nov."}
MACRO {dec} {"Dec."}
@@ -299,6 +333,7 @@ ENTRY
CTLdash_repeated_names
CTLname_format_string
CTLname_latex_cmd
+ CTLname_url_prefix
}
{}
{ label }
@@ -343,7 +378,8 @@ STRINGS { bibinfo
t
ALTinterwordstretchfactor
name.format.string
- name.latex.cmd}
+ name.latex.cmd
+ name.url.prefix}
@@ -363,6 +399,7 @@ FUNCTION {initialize.controls}
default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
default.name.format.string 'name.format.string :=
default.name.latex.cmd 'name.latex.cmd :=
+ default.name.url.prefix 'name.url.prefix :=
}
@@ -1024,33 +1061,35 @@ FUNCTION {start.entry}
% code sequences are those that control the alternate interword spacing and
% foreign language hyphenation patterns. The heavy use of \providecommand
% gives users a way to override the defaults. Special thanks to Javier Bezos,
-% Johannes Braams, Robin Fairburns, Heiko Oberdiek, Donald Arseneau and all
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
% the other gurus on comp.text.tex for their help and advice on the topic of
% \selectlanguage, Babel and BibTeX.
FUNCTION {begin.bib}
-{ preamble$ empty$ 'skip$
+{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ preamble$ empty$ 'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" longest.label * "}" *
write$ newline$
"\providecommand{\url}[1]{#1}"
write$ newline$
- "\csname url@rmstyle\endcsname"
+ "\csname url@samestyle\endcsname"
write$ newline$
"\providecommand{\newblock}{\relax}"
write$ newline$
"\providecommand{\bibinfo}[2]{#2}"
write$ newline$
- "\providecommand\BIBentrySTDinterwordspacing{\spaceskip=0pt\relax}"
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
write$ newline$
- "\providecommand\BIBentryALTinterwordstretchfactor{"
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
ALTinterwordstretchfactor * "}" *
write$ newline$
- "\providecommand\BIBentryALTinterwordspacing{\spaceskip=\fontdimen2\font plus "
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
write$ newline$
"\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
write$ newline$
- "\providecommand\BIBforeignlanguage[2]{{%"
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
write$ newline$
"\expandafter\ifx\csname l@#1\endcsname\relax"
write$ newline$
@@ -1068,6 +1107,10 @@ FUNCTION {begin.bib}
write$ newline$
"#2}}"
write$ newline$
+ "\providecommand{\BIBdecl}{\relax}"
+ write$ newline$
+ "\BIBdecl"
+ write$ newline$
}
FUNCTION {end.bib}
@@ -1101,13 +1144,17 @@ FUNCTION {initialize.longest.label}
}
FUNCTION {longest.label.pass}
-{ number.label int.to.str$ 'label :=
- number.label #1 + 'number.label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ { skip$ }
+ if$
}
- 'skip$
if$
}
@@ -1198,20 +1245,16 @@ FUNCTION {format.names}
if$
namesleft #1 >
{ ", " * t do.name.latex.cmd * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
- {
- " " * bbl.etal emphasize *
- }
- {
+ { " " * bbl.etal emphasize * }
+ { numnames #2 >
+ { "," * }
+ { skip$ }
+ if$
bbl.and
space.word * t do.name.latex.cmd *
}
@@ -1672,11 +1715,11 @@ FUNCTION {format.pages}
FUNCTION {format.tech.report.number}
{ number "number" bibinfo.check
+ this.to.prev.status
+ this.status.std
+ cap.status.std
type duplicate$ empty$
{ pop$
- this.to.prev.status
- this.status.std
- cap.status.std
bbl.techrep
}
{ skip$ }
@@ -1684,10 +1727,7 @@ FUNCTION {format.tech.report.number}
"type" bibinfo.check
swap$ duplicate$ empty$
{ pop$ }
- { this.to.prev.status
- this.status.std
- cap.status.std
- tie.or.space.prefix * * }
+ { tie.or.space.prefix * * }
if$
}
@@ -1891,7 +1931,7 @@ FUNCTION {format.url}
{ this.to.prev.status
this.status.std
cap.yes 'status.cap :=
- bbl.urlprefix " " *
+ name.url.prefix " " *
"\url{" * url * "}" *
punct.no 'this.status.punct :=
punct.period 'prev.status.punct :=
@@ -2297,7 +2337,7 @@ FUNCTION {IEEEtranBSTCTL}
{ skip$ }
{ CTLalt_stretch_factor
'ALTinterwordstretchfactor :=
- "\renewcommand\BIBentryALTinterwordstretchfactor{"
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
ALTinterwordstretchfactor * "}" *
write$ newline$
}
@@ -2324,8 +2364,15 @@ FUNCTION {IEEEtranBSTCTL}
'name.latex.cmd :=
}
if$
-
-
+ CTLname_url_prefix
+ missing$
+ { skip$ }
+ { CTLname_url_prefix
+ 'name.url.prefix :=
+ }
+ if$
+
+
num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
{ "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
@@ -2342,6 +2389,7 @@ FUNCTION {conference}{inproceedings}
FUNCTION {online}{electronic}
FUNCTION {internet}{electronic}
FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
FUNCTION {default.type}{misc}
diff --git a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranN.bst b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranN.bst
new file mode 100644
index 00000000000..46e00f14223
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranN.bst
@@ -0,0 +1,2709 @@
+%%
+%% IEEEtranN.bst
+%% BibTeX Bibliography Style file
+%% Natbib version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
+%% Version 1.12 (2007/01/11)
+%%
+%% Copyright (c) 2003-2007 Michael Shell
+%%
+%% Original starting code base and algorithms obtained from the output of
+%% Patrick W. Daly's makebst package as well as from prior versions of
+%% IEEE BibTeX styles:
+%%
+%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
+%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
+%%
+%% Added sorting and natbib code is from Patrick W Daly's unsrtnat.bst
+%%
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
+%% and/or
+%% http://www.ieee.org/
+%%
+%% For use with BibTeX version 0.99a or later
+%%
+%% This is a natbib compatible citation style.
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
+%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
+%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
+%%*************************************************************************
+%
+%
+% Changelog:
+%
+% 1.12 (2007/01/11) Initial release
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are the defaults for the user adjustable controls. The values used
+% here can be overridden by the user via IEEEtranBSTCTL entry type.
+
+% NOTE: The recommended LaTeX command to invoke a control entry type is:
+%
+%\makeatletter
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+% \@for\@citeb:=#2\do{%
+% \edef\@citeb{\expandafter\@firstofone\@citeb}%
+% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+% \@esphack}
+%\makeatother
+%
+% It is called at the start of the document, before the first \cite, like:
+% \bstctlcite{IEEEexample:BSTcontrol}
+%
+% IEEEtran.cls V1.6 and later does provide this command.
+
+
+
+% #0 turns off the display of the number for articles.
+% #1 enables
+FUNCTION {default.is.use.number.for.article} { #1 }
+
+
+% #0 turns off the display of the paper and type fields in @inproceedings.
+% #1 enables
+FUNCTION {default.is.use.paper} { #1 }
+
+
+% #0 turns off the forced use of "et al."
+% #1 enables
+FUNCTION {default.is.forced.et.al} { #0 }
+
+% The maximum number of names that can be present beyond which an "et al."
+% usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
+% is not greater than this value!
+% Note: There are many instances of references in IEEE journals which have
+% a very large number of authors as well as instances in which "et al." is
+% used profusely.
+FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
+
+% The number of names that will be shown with a forced "et al.".
+% Must be less than or equal to max.num.names.before.forced.et.al
+FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
+
+
+% #0 turns off the alternate interword spacing for entries with URLs.
+% #1 enables
+FUNCTION {default.is.use.alt.interword.spacing} { #1 }
+
+% If alternate interword spacing for entries with URLs is enabled, this is
+% the interword spacing stretch factor that will be used. For example, the
+% default "4" here means that the interword spacing in entries with URLs can
+% stretch to four times normal. Does not have to be an integer. Note that
+% the value specified here can be overridden by the user in their LaTeX
+% code via a command such as:
+% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
+% that via the IEEEtranBSTCTL entry type.
+FUNCTION {default.ALTinterwordstretchfactor} { "4" }
+
+
+% #0 turns off the "dashification" of repeated (i.e., identical to those
+% of the previous entry) names. IEEE normally does this.
+% #1 enables
+FUNCTION {default.is.dash.repeated.names} { #1 }
+
+
+% The default name format control string.
+FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
+
+
+% The default LaTeX font command for the names.
+FUNCTION {default.name.latex.cmd}{ "" }
+
+
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
+% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
+
+% #0 turns off the terminal startup banner/completed message so as to
+% operate more quietly.
+% #1 enables
+FUNCTION {is.print.banners.to.terminal} { #1 }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FILE VERSION AND BANNER %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION{bst.file.version} { "1.12" }
+FUNCTION{bst.file.date} { "2007/01/11" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
+
+FUNCTION {banner.message}
+{ is.print.banners.to.terminal
+ { "-- IEEEtranN.bst version" " " * bst.file.version *
+ " (" * bst.file.date * ") " * "by Michael Shell." *
+ top$
+ "-- " bst.file.website *
+ top$
+ "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
+ top$
+ "** Natbib version - not for normal IEEE work."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {completed.message}
+{ is.print.banners.to.terminal
+ { ""
+ top$
+ "Done."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING CONSTANTS %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {bbl.and}{ "and" }
+FUNCTION {bbl.etal}{ "et~al." }
+FUNCTION {bbl.editors}{ "eds." }
+FUNCTION {bbl.editor}{ "ed." }
+FUNCTION {bbl.edition}{ "ed." }
+FUNCTION {bbl.volume}{ "vol." }
+FUNCTION {bbl.of}{ "of" }
+FUNCTION {bbl.number}{ "no." }
+FUNCTION {bbl.in}{ "in" }
+FUNCTION {bbl.pages}{ "pp." }
+FUNCTION {bbl.page}{ "p." }
+FUNCTION {bbl.chapter}{ "ch." }
+FUNCTION {bbl.paper}{ "paper" }
+FUNCTION {bbl.part}{ "pt." }
+FUNCTION {bbl.patent}{ "Patent" }
+FUNCTION {bbl.patentUS}{ "U.S." }
+FUNCTION {bbl.revision}{ "Rev." }
+FUNCTION {bbl.series}{ "ser." }
+FUNCTION {bbl.standard}{ "Std." }
+FUNCTION {bbl.techrep}{ "Tech. Rep." }
+FUNCTION {bbl.mthesis}{ "Master's thesis" }
+FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
+FUNCTION {bbl.st}{ "st" }
+FUNCTION {bbl.nd}{ "nd" }
+FUNCTION {bbl.rd}{ "rd" }
+FUNCTION {bbl.th}{ "th" }
+
+
+% This is the LaTeX spacer that is used when a larger than normal space
+% is called for (such as just before the address:publisher).
+FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
+
+% The LaTeX code for dashes that are used to represent repeated names.
+% Note: Some older IEEE journals used something like
+% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
+% the baseline. However, IEEE now uses a thinner, above baseline,
+% six dash long sequence.
+FUNCTION {repeated.name.dashes} { "------" }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% PREDEFINED STRING MACROS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+MACRO {jan} {"Jan."}
+MACRO {feb} {"Feb."}
+MACRO {mar} {"Mar."}
+MACRO {apr} {"Apr."}
+MACRO {may} {"May"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
+MACRO {aug} {"Aug."}
+MACRO {sep} {"Sep."}
+MACRO {oct} {"Oct."}
+MACRO {nov} {"Nov."}
+MACRO {dec} {"Dec."}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% ENTRY FIELDS %%
+%%%%%%%%%%%%%%%%%%
+
+ENTRY
+ { address
+ assignee
+ author
+ booktitle
+ chapter
+ day
+ dayfiled
+ edition
+ editor
+ howpublished
+ institution
+ intype
+ journal
+ key
+ language
+ month
+ monthfiled
+ nationality
+ note
+ number
+ organization
+ pages
+ paper
+ publisher
+ school
+ series
+ revision
+ title
+ type
+ url
+ volume
+ year
+ yearfiled
+ CTLuse_article_number
+ CTLuse_paper
+ CTLuse_forced_etal
+ CTLmax_names_forced_etal
+ CTLnames_show_etal
+ CTLuse_alt_spacing
+ CTLalt_stretch_factor
+ CTLdash_repeated_names
+ CTLname_format_string
+ CTLname_latex_cmd
+ CTLname_url_prefix
+ }
+ {}
+ { label extra.label sort.label short.list}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% INTEGER VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+INTEGERS { prev.status.punct this.status.punct punct.std
+ punct.no punct.comma punct.period
+ prev.status.space this.status.space space.std
+ space.no space.normal space.large
+ prev.status.quote this.status.quote quote.std
+ quote.no quote.close
+ prev.status.nline this.status.nline nline.std
+ nline.no nline.newblock
+ status.cap cap.std
+ cap.no cap.yes}
+
+INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
+
+INTEGERS { is.use.number.for.article
+ is.use.paper
+ is.forced.et.al
+ max.num.names.before.forced.et.al
+ num.names.shown.with.forced.et.al
+ is.use.alt.interword.spacing
+ is.dash.repeated.names}
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+STRINGS { bibinfo
+ longest.label
+ oldname
+ s
+ t
+ ALTinterwordstretchfactor
+ name.format.string
+ name.latex.cmd
+ name.url.prefix}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOW LEVEL FUNCTIONS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.controls}
+{ default.is.use.number.for.article 'is.use.number.for.article :=
+ default.is.use.paper 'is.use.paper :=
+ default.is.forced.et.al 'is.forced.et.al :=
+ default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
+ default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
+ default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
+ default.is.dash.repeated.names 'is.dash.repeated.names :=
+ default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
+ default.name.format.string 'name.format.string :=
+ default.name.latex.cmd 'name.latex.cmd :=
+ default.name.url.prefix 'name.url.prefix :=
+}
+
+
+% This IEEEtran.bst features a very powerful and flexible mechanism for
+% controlling the capitalization, punctuation, spacing, quotation, and
+% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
+% or use the newline/newblock feature, but it has been implemented for
+% possible future use.) The output states of IEEEtran.bst consist of
+% multiple independent attributes and, as such, can be thought of as being
+% vectors, rather than the simple scalar values ("before.all",
+% "mid.sentence", etc.) used in most other .bst files.
+%
+% The more flexible and complex design used here was motivated in part by
+% IEEE's rather unusual bibliography style. For example, IEEE ends the
+% previous field item with a period and large space prior to the publisher
+% address; the @electronic entry types use periods as inter-item punctuation
+% rather than the commas used by the other entry types; and URLs are never
+% followed by periods even though they are the last item in the entry.
+% Although it is possible to accommodate these features with the conventional
+% output state system, the seemingly endless exceptions make for convoluted,
+% unreliable and difficult to maintain code.
+%
+% IEEEtran.bst's output state system can be easily understood via a simple
+% illustration of two most recently formatted entry fields (on the stack):
+%
+% CURRENT_ITEM
+% "PREVIOUS_ITEM
+%
+% which, in this example, is to eventually appear in the bibliography as:
+%
+% "PREVIOUS_ITEM," CURRENT_ITEM
+%
+% It is the job of the output routine to take the previous item off of the
+% stack (while leaving the current item at the top of the stack), apply its
+% trailing punctuation (including closing quote marks) and spacing, and then
+% to write the result to BibTeX's output buffer:
+%
+% "PREVIOUS_ITEM,"
+%
+% Punctuation (and spacing) between items is often determined by both of the
+% items rather than just the first one. The presence of quotation marks
+% further complicates the situation because, in standard English, trailing
+% punctuation marks are supposed to be contained within the quotes.
+%
+% IEEEtran.bst maintains two output state (aka "status") vectors which
+% correspond to the previous and current (aka "this") items. Each vector
+% consists of several independent attributes which track punctuation,
+% spacing, quotation, and newlines. Capitalization status is handled by a
+% separate scalar because the format routines, not the output routine,
+% handle capitalization and, therefore, there is no need to maintain the
+% capitalization attribute for both the "previous" and "this" items.
+%
+% When a format routine adds a new item, it copies the current output status
+% vector to the previous output status vector and (usually) resets the
+% current (this) output status vector to a "standard status" vector. Using a
+% "standard status" vector in this way allows us to redefine what we mean by
+% "standard status" at the start of each entry handler and reuse the same
+% format routines under the various inter-item separation schemes. For
+% example, the standard status vector for the @book entry type may use
+% commas for item separators, while the @electronic type may use periods,
+% yet both entry handlers exploit many of the exact same format routines.
+%
+% Because format routines have write access to the output status vector of
+% the previous item, they can override the punctuation choices of the
+% previous format routine! Therefore, it becomes trivial to implement rules
+% such as "Always use a period and a large space before the publisher." By
+% pushing the generation of the closing quote mark to the output routine, we
+% avoid all the problems caused by having to close a quote before having all
+% the information required to determine what the punctuation should be.
+%
+% The IEEEtran.bst output state system can easily be expanded if needed.
+% For instance, it is easy to add a "space.tie" attribute value if the
+% bibliography rules mandate that two items have to be joined with an
+% unbreakable space.
+
+FUNCTION {initialize.status.constants}
+{ #0 'punct.no :=
+ #1 'punct.comma :=
+ #2 'punct.period :=
+ #0 'space.no :=
+ #1 'space.normal :=
+ #2 'space.large :=
+ #0 'quote.no :=
+ #1 'quote.close :=
+ #0 'cap.no :=
+ #1 'cap.yes :=
+ #0 'nline.no :=
+ #1 'nline.newblock :=
+}
+
+FUNCTION {std.status.using.comma}
+{ punct.comma 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.no 'cap.std :=
+}
+
+FUNCTION {std.status.using.period}
+{ punct.period 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.yes 'cap.std :=
+}
+
+FUNCTION {initialize.prev.this.status}
+{ punct.no 'prev.status.punct :=
+ space.no 'prev.status.space :=
+ quote.no 'prev.status.quote :=
+ nline.no 'prev.status.nline :=
+ punct.no 'this.status.punct :=
+ space.no 'this.status.space :=
+ quote.no 'this.status.quote :=
+ nline.no 'this.status.nline :=
+ cap.yes 'status.cap :=
+}
+
+FUNCTION {this.status.std}
+{ punct.std 'this.status.punct :=
+ space.std 'this.status.space :=
+ quote.std 'this.status.quote :=
+ nline.std 'this.status.nline :=
+}
+
+FUNCTION {cap.status.std}{ cap.std 'status.cap := }
+
+FUNCTION {this.to.prev.status}
+{ this.status.punct 'prev.status.punct :=
+ this.status.space 'prev.status.space :=
+ this.status.quote 'prev.status.quote :=
+ this.status.nline 'prev.status.nline :=
+}
+
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ { skip$ }
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ { skip$ }
+ if$
+}
+
+
+% convert the strings "yes" or "no" to #1 or #0 respectively
+FUNCTION {yes.no.to.int}
+{ "l" change.case$ duplicate$
+ "yes" =
+ { pop$ #1 }
+ { duplicate$ "no" =
+ { pop$ #0 }
+ { "unknown boolean " quote$ * swap$ * quote$ *
+ " in " * cite$ * warning$
+ #0
+ }
+ if$
+ }
+ if$
+}
+
+
+% pushes true if the single char string on the stack is in the
+% range of "0" to "9"
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+% multiplies the integer on the stack by a factor of 10
+FUNCTION {bump.int.mag}
+{ #0 'multiresult :=
+ { duplicate$ #0 > }
+ { #1 -
+ multiresult #10 +
+ 'multiresult :=
+ }
+ while$
+pop$
+multiresult
+}
+
+% converts a single character string on the stack to an integer
+FUNCTION {char.to.integer}
+{ duplicate$
+ is.num
+ { chr.to.int$ "0" chr.to.int$ - }
+ {"noninteger character " quote$ * swap$ * quote$ *
+ " in integer field of " * cite$ * warning$
+ #0
+ }
+ if$
+}
+
+% converts a string on the stack to an integer
+FUNCTION {string.to.integer}
+{ duplicate$ text.length$ 'namesleft :=
+ #1 'nameptr :=
+ #0 'numnames :=
+ { nameptr namesleft > not }
+ { duplicate$ nameptr #1 substring$
+ char.to.integer numnames bump.int.mag +
+ 'numnames :=
+ nameptr #1 +
+ 'nameptr :=
+ }
+ while$
+pop$
+numnames
+}
+
+
+
+
+% The output routines write out the *next* to the top (previous) item on the
+% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
+% the output status for the top two items on the stack, these output
+% routines have to consider the previous output status (which corresponds to
+% the item that is being output). Full independent control of punctuation,
+% closing quote marks, spacing, and newblock is provided.
+%
+% "output.nonnull" does not check for the presence of a previous empty
+% item.
+%
+% "output" does check for the presence of a previous empty item and will
+% remove an empty item rather than outputing it.
+%
+% "output.warn" is like "output", but will issue a warning if it detects
+% an empty item.
+
+FUNCTION {output.nonnull}
+{ swap$
+ prev.status.punct punct.comma =
+ { "," * }
+ { skip$ }
+ if$
+ prev.status.punct punct.period =
+ { add.period$ }
+ { skip$ }
+ if$
+ prev.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+ prev.status.space space.normal =
+ { " " * }
+ { skip$ }
+ if$
+ prev.status.space space.large =
+ { large.space * }
+ { skip$ }
+ if$
+ write$
+ prev.status.nline nline.newblock =
+ { newline$ "\newblock " write$ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.warn}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+% "fin.entry" is the output routine that handles the last item of the entry
+% (which will be on the top of the stack when "fin.entry" is called).
+
+FUNCTION {fin.entry}
+{ this.status.punct punct.no =
+ { skip$ }
+ { add.period$ }
+ if$
+ this.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+write$
+newline$
+}
+
+
+FUNCTION {is.last.char.not.punct}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {is.multiple.pages}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {do.name.latex.cmd}
+{ name.latex.cmd
+ empty$
+ { skip$ }
+ { name.latex.cmd "{" * swap$ * "}" * }
+ if$
+}
+
+% IEEEtran.bst uses its own \BIBforeignlanguage command which directly
+% invokes the TeX hyphenation patterns without the need of the Babel
+% package. Babel does a lot more than switch hyphenation patterns and
+% its loading can cause unintended effects in many class files (such as
+% IEEEtran.cls).
+FUNCTION {select.language}
+{ duplicate$ empty$ 'pop$
+ { language empty$ 'skip$
+ { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {space.word}{ " " swap$ * " " * }
+
+
+% Field Conditioners, Converters, Checkers and External Interfaces
+
+FUNCTION {empty.field.to.null.string}
+{ duplicate$ empty$
+ { pop$ "" }
+ { skip$ }
+ if$
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ { pop$ }
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {empty.entry.warn}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$ url empty$
+ and and and and and and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+
+% The bibinfo system provides a way for the electronic parsing/acquisition
+% of a bibliography's contents as is done by ReVTeX. For example, a field
+% could be entered into the bibliography as:
+% \bibinfo{volume}{2}
+% Only the "2" would show up in the document, but the LaTeX \bibinfo command
+% could do additional things with the information. IEEEtran.bst does provide
+% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
+% currently not used as the bogus bibinfo functions defined here output the
+% entry values directly without the \bibinfo wrapper. The bibinfo functions
+% themselves (and the calls to them) are retained for possible future use.
+%
+% bibinfo.check avoids acting on missing fields while bibinfo.warn will
+% issue a warning message if a missing field is detected. Prior to calling
+% the bibinfo functions, the user should push the field value and then its
+% name string, in that order.
+
+FUNCTION {bibinfo.check}
+{ swap$ duplicate$ missing$
+ { pop$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ pop$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {bibinfo.warn}
+{ swap$ duplicate$ missing$
+ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ "empty " swap$ * " in " * cite$ * warning$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+
+% IEEE separates large numbers with more than 4 digits into groups of
+% three. IEEE uses a small space to separate these number groups.
+% Typical applications include patent and page numbers.
+
+% number of consecutive digits required to trigger the group separation.
+FUNCTION {large.number.trigger}{ #5 }
+
+% For numbers longer than the trigger, this is the blocksize of the groups.
+% The blocksize must be less than the trigger threshold, and 2 * blocksize
+% must be greater than the trigger threshold (can't do more than one
+% separation on the initial trigger).
+FUNCTION {large.number.blocksize}{ #3 }
+
+% What is actually inserted between the number groups.
+FUNCTION {large.number.separator}{ "\," }
+
+% So as to save on integer variables by reusing existing ones, numnames
+% holds the current number of consecutive digits read and nameptr holds
+% the number that will trigger an inserted space.
+FUNCTION {large.number.separate}
+{ 't :=
+ ""
+ #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ { t empty$ not }
+ { t #-1 #1 substring$ is.num
+ { numnames #1 + 'numnames := }
+ { #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ }
+ if$
+ t #-1 #1 substring$ swap$ *
+ t #-2 global.max$ substring$ 't :=
+ numnames nameptr =
+ { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
+ nameptr large.number.blocksize - #1 + global.max$ substring$
+ large.number.separator swap$ * *
+ nameptr large.number.blocksize - 'numnames :=
+ large.number.blocksize #1 + 'nameptr :=
+ }
+ { skip$ }
+ if$
+ }
+ while$
+}
+
+% Converts all single dashes "-" to double dashes "--".
+FUNCTION {n.dashify}
+{ large.number.separate
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+
+% This function detects entries with names that are identical to that of
+% the previous entry and replaces the repeated names with dashes (if the
+% "is.dash.repeated.names" user control is nonzero).
+FUNCTION {name.or.dash}
+{ 's :=
+ oldname empty$
+ { s 'oldname := s }
+ { s oldname =
+ { is.dash.repeated.names
+ { repeated.name.dashes }
+ { s 'oldname := s }
+ if$
+ }
+ { s 'oldname := s }
+ if$
+ }
+ if$
+}
+
+% Converts the number string on the top of the stack to
+% "numerical ordinal form" (e.g., "7" to "7th"). There is
+% no artificial limit to the upper bound of the numbers as the
+% least significant digit always determines the ordinal form.
+FUNCTION {num.to.ordinal}
+{ duplicate$ #-1 #1 substring$ "1" =
+ { bbl.st * }
+ { duplicate$ #-1 #1 substring$ "2" =
+ { bbl.nd * }
+ { duplicate$ #-1 #1 substring$ "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+% If the string on the top of the stack begins with a number,
+% (e.g., 11th) then replace the string with the leading number
+% it contains. Otherwise retain the string as-is. s holds the
+% extracted number, t holds the part of the string that remains
+% to be scanned.
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+% Converts the word number string on the top of the stack to
+% Arabic string form. Will be successful up to "tenth".
+FUNCTION {word.to.num}
+{ duplicate$ "l" change.case$ 's :=
+ s "first" =
+ { pop$ "1" }
+ { skip$ }
+ if$
+ s "second" =
+ { pop$ "2" }
+ { skip$ }
+ if$
+ s "third" =
+ { pop$ "3" }
+ { skip$ }
+ if$
+ s "fourth" =
+ { pop$ "4" }
+ { skip$ }
+ if$
+ s "fifth" =
+ { pop$ "5" }
+ { skip$ }
+ if$
+ s "sixth" =
+ { pop$ "6" }
+ { skip$ }
+ if$
+ s "seventh" =
+ { pop$ "7" }
+ { skip$ }
+ if$
+ s "eighth" =
+ { pop$ "8" }
+ { skip$ }
+ if$
+ s "ninth" =
+ { pop$ "9" }
+ { skip$ }
+ if$
+ s "tenth" =
+ { pop$ "10" }
+ { skip$ }
+ if$
+}
+
+
+% Converts the string on the top of the stack to numerical
+% ordinal (e.g., "11th") form.
+FUNCTION {convert.edition}
+{ duplicate$ empty$ 'skip$
+ { duplicate$ #1 #1 substring$ is.num
+ { extract.num
+ num.to.ordinal
+ }
+ { word.to.num
+ duplicate$ #1 #1 substring$ is.num
+ { num.to.ordinal }
+ { "edition ordinal word " quote$ * edition * quote$ *
+ " may be too high (or improper) for conversion" * " in " * cite$ * warning$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LATEX BIBLIOGRAPHY CODE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% from plainnat.bst
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.full }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.full }
+ { author.full }
+ if$
+ }
+ if$
+}
+% END from plainnat.bst
+
+FUNCTION {start.entry}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ initialize.prev.this.status
+}
+
+% Here we write out all the LaTeX code that we will need. The most involved
+% code sequences are those that control the alternate interword spacing and
+% foreign language hyphenation patterns. The heavy use of \providecommand
+% gives users a way to override the defaults. Special thanks to Javier Bezos,
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
+% the other gurus on comp.text.tex for their help and advice on the topic of
+% \selectlanguage, Babel and BibTeX.
+FUNCTION {begin.bib}
+{ "% Generated by IEEEtranN.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ preamble$ empty$ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{#1}"
+ write$ newline$
+ "\csname url@samestyle\endcsname"
+ write$ newline$
+ "\providecommand{\newblock}{\relax}"
+ write$ newline$
+ "\providecommand{\bibinfo}[2]{#2}"
+ write$ newline$
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
+ write$ newline$
+ "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
+ write$ newline$
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
+ write$ newline$
+ "\expandafter\ifx\csname l@#1\endcsname\relax"
+ write$ newline$
+ "\typeout{** WARNING: IEEEtranN.bst: No hyphenation pattern has been}%"
+ write$ newline$
+ "\typeout{** loaded for the language `#1'. Using the pattern for}%"
+ write$ newline$
+ "\typeout{** the default language instead.}%"
+ write$ newline$
+ "\else"
+ write$ newline$
+ "\language=\csname l@#1\endcsname"
+ write$ newline$
+ "\fi"
+ write$ newline$
+ "#2}}"
+ write$ newline$
+ "\providecommand{\BIBdecl}{\relax}"
+ write$ newline$
+ "\BIBdecl"
+ write$ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$ "\end{thebibliography}" write$ newline$ }
+
+FUNCTION {if.url.alt.interword.spacing}
+{ is.use.alt.interword.spacing
+ {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$}
+ { skip$ }
+ if$
+}
+
+FUNCTION {if.url.std.interword.spacing}
+{ is.use.alt.interword.spacing
+ {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$}
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%% FORMAT HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%%
+
+%% Lower Level Formats (used by higher level formats)
+
+FUNCTION {format.address.org.or.pub.date}
+{ 't :=
+ ""
+ year empty$
+ { "empty year in " cite$ * warning$ }
+ { skip$ }
+ if$
+ address empty$ t empty$ and
+ year empty$ and month empty$ and
+ { skip$ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ address "address" bibinfo.check *
+ t empty$
+ { skip$ }
+ { punct.period 'prev.status.punct :=
+ space.large 'prev.status.space :=
+ address empty$
+ { skip$ }
+ { ": " * }
+ if$
+ t *
+ }
+ if$
+ year empty$ month empty$ and
+ { skip$ }
+ { t empty$ address empty$ and
+ { skip$ }
+ { ", " * }
+ if$
+ month empty$
+ { year empty$
+ { skip$ }
+ { year "year" bibinfo.check * }
+ if$
+ }
+ { month "month" bibinfo.check *
+ year empty$
+ { skip$ }
+ { " " * year "year" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ this.to.prev.status
+ this.status.std
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ name.format.string
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ { nameptr num.names.shown.with.forced.et.al #1 + =
+ numnames max.num.names.before.forced.et.al >
+ is.forced.et.al and and
+ { "others" 't :=
+ #1 'namesleft :=
+ }
+ { skip$ }
+ if$
+ namesleft #1 >
+ { ", " * t do.name.latex.cmd * }
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ { " " * bbl.etal emphasize * }
+ { numnames #2 >
+ { "," * }
+ { skip$ }
+ if$
+ bbl.and
+ space.word * t do.name.latex.cmd *
+ }
+ if$
+ }
+ if$
+ }
+ { t do.name.latex.cmd }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ cap.status.std
+ } if$
+}
+
+
+
+
+%% Higher Level Formats
+
+%% addresses/locations
+
+FUNCTION {format.address}
+{ address duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% author/editor names
+
+FUNCTION {format.authors}{ author "author" format.names }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ { ", " *
+ get.bbl.editor
+ capitalize
+ *
+ }
+ if$
+}
+
+
+
+%% date
+
+FUNCTION {format.date}
+{
+ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "there's a month but no year in " cite$ * warning$ }
+ if$
+ *
+ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ swap$ 'skip$
+ {
+ swap$
+ " " * swap$
+ }
+ if$
+ *
+ }
+ if$
+}
+
+FUNCTION {format.date.electronic}
+{ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$
+ { pop$ }
+ { "there's a month but no year in " cite$ * warning$
+ pop$ ")" * "(" swap$ *
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+ }
+ { swap$
+ { swap$ pop$ ")" * "(" swap$ * }
+ { "(" swap$ * ", " * swap$ * ")" * }
+ if$
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% edition/title
+
+% Note: IEEE considers the edition to be closely associated with
+% the title of a book. So, in IEEEtran.bst the edition is normally handled
+% within the formatting of the title. The format.edition function is
+% retained here for possible future use.
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$ change.case$
+ "edition" bibinfo.check
+ "~" * bbl.edition *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of a conference proceedings.
+% Here we use the "intype" field to provide the user a way to
+% override the word "in" (e.g., with things like "presented at")
+% Use of intype stops the emphasis of the booktitle to indicate that
+% we no longer mean the written conference proceedings, but the
+% conference itself.
+FUNCTION {format.in.booktitle}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ intype missing$
+ { emphasize
+ bbl.in " " *
+ }
+ { intype " " * }
+ if$
+ swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of collection.
+% Here the "intype" field is not supported, but "edition" is.
+FUNCTION {format.in.booktitle.edition}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ "l" change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ bbl.in " " * swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { quote.close 'this.status.quote :=
+ is.last.char.not.punct
+ { punct.std 'this.status.punct := }
+ { punct.no 'this.status.punct := }
+ if$
+ select.language
+ "``" swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title.electronic}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$
+ { skip$ }
+ { select.language }
+ if$
+}
+
+FUNCTION {format.book.title.edition}
+{ title "title" bibinfo.check
+ duplicate$ empty$
+ { "empty title in " cite$ * warning$ }
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$
+ change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.book.title}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% journal
+
+FUNCTION {format.journal}
+{ journal duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% how published
+
+FUNCTION {format.howpublished}
+{ howpublished duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% institutions/organization/publishers/school
+
+FUNCTION {format.institution}
+{ institution duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.organization}
+{ organization duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.address.publisher.date}
+{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
+
+FUNCTION {format.address.publisher.date.nowarn}
+{ publisher "publisher" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.address.organization.date}
+{ organization "organization" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.school}
+{ school duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% volume/number/series/chapter/pages
+
+FUNCTION {format.volume}
+{ volume empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ bbl.volume
+ status.cap
+ { capitalize }
+ { skip$ }
+ if$
+ swap$ tie.or.space.prefix
+ "volume" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number}
+{ number empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ status.cap
+ { bbl.number capitalize }
+ { bbl.number }
+ if$
+ swap$ tie.or.space.prefix
+ "number" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number.if.use.for.article}
+{ is.use.number.for.article
+ { format.number }
+ { "" }
+ if$
+}
+
+% IEEE does not seem to tie the series so closely with the volume
+% and number as is done in other bibliography styles. Instead the
+% series is treated somewhat like an extension of the title.
+FUNCTION {format.series}
+{ series empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.series " " *
+ series "series" bibinfo.check *
+ cap.status.std
+ }
+ if$
+}
+
+
+FUNCTION {format.chapter}
+{ chapter empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+% The intended use of format.paper is for paper numbers of inproceedings.
+% The paper type can be overridden via the type field.
+% We allow the type to be displayed even if the paper number is absent
+% for things like "postdeadline paper"
+FUNCTION {format.paper}
+{ is.use.paper
+ { paper empty$
+ { type empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type "type" bibinfo.check
+ cap.status.std
+ }
+ if$
+ }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.paper }
+ { type "type" bibinfo.check }
+ if$
+ " " * paper
+ "paper" bibinfo.check
+ *
+ cap.status.std
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ duplicate$ is.multiple.pages
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% technical report number
+
+FUNCTION {format.tech.report.number}
+{ number "number" bibinfo.check
+ this.to.prev.status
+ this.status.std
+ cap.status.std
+ type duplicate$ empty$
+ { pop$
+ bbl.techrep
+ }
+ { skip$ }
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+
+
+
+%% note
+
+FUNCTION {format.note}
+{ note empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ punct.period 'this.status.punct :=
+ note #1 #1 substring$
+ duplicate$ "{" =
+ { skip$ }
+ { status.cap
+ { "u" }
+ { "l" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% patent
+
+FUNCTION {format.patent.date}
+{ this.to.prev.status
+ this.status.std
+ year empty$
+ { monthfiled duplicate$ empty$
+ { "monthfiled" bibinfo.check pop$ "" }
+ { "monthfiled" bibinfo.check }
+ if$
+ dayfiled duplicate$ empty$
+ { "dayfiled" bibinfo.check pop$ "" * }
+ { "dayfiled" bibinfo.check
+ monthfiled empty$
+ { "dayfiled without a monthfiled in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ yearfiled empty$
+ { "no year or yearfiled in " cite$ * warning$ }
+ { yearfiled "yearfiled" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ }
+ { month duplicate$ empty$
+ { "month" bibinfo.check pop$ "" }
+ { "month" bibinfo.check }
+ if$
+ day duplicate$ empty$
+ { "day" bibinfo.check pop$ "" * }
+ { "day" bibinfo.check
+ month empty$
+ { "day without a month in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ year "year" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.patent.nationality.type.number}
+{ this.to.prev.status
+ this.status.std
+ nationality duplicate$ empty$
+ { "nationality" bibinfo.warn pop$ "" }
+ { "nationality" bibinfo.check
+ duplicate$ "l" change.case$ "united states" =
+ { pop$ bbl.patentUS }
+ { skip$ }
+ if$
+ " " *
+ }
+ if$
+ type empty$
+ { bbl.patent "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.warn pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+
+
+%% standard
+
+FUNCTION {format.organization.institution.standard.type.number}
+{ this.to.prev.status
+ this.status.std
+ organization duplicate$ empty$
+ { pop$
+ institution duplicate$ empty$
+ { "institution" bibinfo.warn }
+ { "institution" bibinfo.warn " " * }
+ if$
+ }
+ { "organization" bibinfo.warn " " * }
+ if$
+ type empty$
+ { bbl.standard "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.check pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.revision}
+{ revision empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.revision
+ revision tie.or.space.prefix
+ "revision" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+%% thesis
+
+FUNCTION {format.master.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.mthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+FUNCTION {format.phd.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.phdthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+
+
+%% URL
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ cap.yes 'status.cap :=
+ name.url.prefix " " *
+ "\url{" * url * "}" *
+ punct.no 'this.status.punct :=
+ punct.period 'prev.status.punct :=
+ space.normal 'this.status.space :=
+ space.normal 'prev.status.space :=
+ quote.no 'this.status.quote :=
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%
+%% ENTRY HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%
+
+
+% Note: In many journals, IEEE (or the authors) tend not to show the number
+% for articles, so the display of the number is controlled here by the
+% switch "is.use.number.for.article"
+FUNCTION {article}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.journal "journal" bibinfo.check "journal" output.warn
+ format.volume output
+ format.number.if.use.for.article output
+ format.pages output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {book}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ author empty$
+ { skip$ }
+ { format.editors output }
+ if$
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {booklet}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {electronic}
+{ std.status.using.period
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.date.electronic output
+ format.article.title.electronic output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inbook}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {incollection}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle.edition "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.address.publisher.date.nowarn output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inproceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.paper output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {manual}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title.edition "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {mastersthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.master.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {misc}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.pages output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {patent}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.patent.nationality.type.number output
+ format.patent.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {periodical}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ format.organization "organization" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {phdthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.phd.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {proceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {standard}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization.institution.standard.type.number output
+ format.revision output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {techreport}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.institution "institution" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.tech.report.number output.nonnull
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {unpublished}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.date output
+ format.note "note" output.warn
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+
+% The special entry type which provides the user interface to the
+% BST controls
+FUNCTION {IEEEtranBSTCTL}
+{ is.print.banners.to.terminal
+ { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
+ top$
+ }
+ { skip$ }
+ if$
+ CTLuse_article_number
+ empty$
+ { skip$ }
+ { CTLuse_article_number
+ yes.no.to.int
+ 'is.use.number.for.article :=
+ }
+ if$
+ CTLuse_paper
+ empty$
+ { skip$ }
+ { CTLuse_paper
+ yes.no.to.int
+ 'is.use.paper :=
+ }
+ if$
+ CTLuse_forced_etal
+ empty$
+ { skip$ }
+ { CTLuse_forced_etal
+ yes.no.to.int
+ 'is.forced.et.al :=
+ }
+ if$
+ CTLmax_names_forced_etal
+ empty$
+ { skip$ }
+ { CTLmax_names_forced_etal
+ string.to.integer
+ 'max.num.names.before.forced.et.al :=
+ }
+ if$
+ CTLnames_show_etal
+ empty$
+ { skip$ }
+ { CTLnames_show_etal
+ string.to.integer
+ 'num.names.shown.with.forced.et.al :=
+ }
+ if$
+ CTLuse_alt_spacing
+ empty$
+ { skip$ }
+ { CTLuse_alt_spacing
+ yes.no.to.int
+ 'is.use.alt.interword.spacing :=
+ }
+ if$
+ CTLalt_stretch_factor
+ empty$
+ { skip$ }
+ { CTLalt_stretch_factor
+ 'ALTinterwordstretchfactor :=
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ }
+ if$
+ CTLdash_repeated_names
+ empty$
+ { skip$ }
+ { CTLdash_repeated_names
+ yes.no.to.int
+ 'is.dash.repeated.names :=
+ }
+ if$
+ CTLname_format_string
+ empty$
+ { skip$ }
+ { CTLname_format_string
+ 'name.format.string :=
+ }
+ if$
+ CTLname_latex_cmd
+ empty$
+ { skip$ }
+ { CTLname_latex_cmd
+ 'name.latex.cmd :=
+ }
+ if$
+ CTLname_url_prefix
+ missing$
+ { skip$ }
+ { CTLname_url_prefix
+ 'name.url.prefix :=
+ }
+ if$
+
+
+ num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
+ { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
+ max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
+ }
+ { skip$ }
+ if$
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+%% ENTRY ALIASES %%
+%%%%%%%%%%%%%%%%%%%
+FUNCTION {conference}{inproceedings}
+FUNCTION {online}{electronic}
+FUNCTION {internet}{electronic}
+FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
+FUNCTION {default.type}{misc}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% MAIN PROGRAM %%
+%%%%%%%%%%%%%%%%%%
+
+READ
+
+EXECUTE {initialize.controls}
+EXECUTE {initialize.status.constants}
+EXECUTE {banner.message}
+
+
+
+% BEGIN sort code based on unsrtnat.bst
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.institution.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { institution empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 institution chop.word #3 text.prefix$ }
+ if$
+ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.key.label }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.key.organization.label }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.key.organization.label }
+ { type$ "standard" =
+ { author.key.organization.institution.label }
+ { author.key.label }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ 'short.list :=
+ "("
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ duplicate$
+ empty$
+ short.list key empty.field.to.null.string = or
+ { pop$ "" }
+ { skip$ }
+ if$
+ *
+ 'label :=
+}
+
+
+INTEGERS { seq.num }
+
+FUNCTION {init.seq}
+{ #0 'seq.num :=}
+
+
+FUNCTION {int.to.fix}
+{ "000000000" swap$ int.to.str$ *
+ #-1 #10 substring$
+}
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ " "
+ *
+ seq.num int.to.fix
+ }
+ { calc.label
+ label sortify
+ " "
+ *
+ seq.num #1 + 'seq.num :=
+ seq.num int.to.fix
+ }
+ if$
+ 'sort.label :=
+ sort.label *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { next.extra "b" =
+ { "a" 'extra.label := }
+ { skip$ }
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ { skip$ }
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+ }
+ if$
+}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+% END sort code based on unsrtnat.bst
+
+
+
+EXECUTE {init.seq}
+
+ITERATE {presort}
+
+SORT
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
+EXECUTE{completed.message}
+
+
+%% That's all folks, mds.
diff --git a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranS.bst b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranS.bst
index 48f92d25a62..29e5b8c63f0 100644
--- a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranS.bst
+++ b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranS.bst
@@ -2,10 +2,10 @@
%% IEEEtranS.bst
%% BibTeX Bibliography Style file
%% Sorting version of IEEEtran.bst
-%% *** Not for use with work to be submitted to the IEEE ***
-%% Version 1.11 (2003/04/02)
+%% *** Not for normal IEEE work ***
+%% Version 1.12 (2007/01/11)
%%
-%% Copyright (c) 2003 Michael Shell
+%% Copyright (c) 2003-2007 Michael Shell
%%
%% Original starting code base and algorithms obtained from the output of
%% Patrick W. Daly's makebst package as well as from prior versions of
@@ -16,45 +16,76 @@
%%
%% Added sorting code is from plain.bst.
%%
-%% See:
-%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/
-%% for latest version and current contact information.
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
+%% and/or
+%% http://www.ieee.org/
%%
%% For use with BibTeX version 0.99a or later
%%
%% This is a numerical citation style.
%%
-%%**********************************************************************
+%%*************************************************************************
%% Legal Notice:
%% This code is offered as-is without any warranty either expressed or
%% implied; without even the implied warranty of MERCHANTABILITY or
-%% FITNESS FOR A PARTICULAR PURPOSE!
+%% FITNESS FOR A PARTICULAR PURPOSE!
%% User assumes all risk.
%% In no event shall IEEE or any contributor to this code be liable for
%% any damages or losses, including, but not limited to, incidental,
%% consequential, or any other damages, resulting from the use or misuse
%% of any information contained here.
%%
-%% This code is distributed under the Perl Artistic License
-%% ( http://language.perl.com/misc/Artistic.html )
-%% and may be freely used, distributed and modified - subject to the
-%% constraints therein.
-%% Retain all contribution notices, credits and disclaimers.
-%%
%% All comments are the opinions of their respective authors and are not
%% necessarily endorsed by the IEEE.
-%%**********************************************************************
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
+%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
+%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
+%%*************************************************************************
%
%
% Changelog:
-%
+%
% 1.10 (2002/09/27) Initial release
%
% 1.11 (2003/04/02)
% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks
% to Ming Kin Lai for reporting this.
-
-
+%
+% 1.12 (2007/01/11)
+% 1. Fixed bug with unwanted comma before "et al." when an entry contained
+% more than two author names. Thanks to Pallav Gupta for reporting this.
+% 2. Fixed bug with anomalous closing quote in tech reports that have a
+% type, but without a number or address. Thanks to Mehrdad Mirreza for
+% reporting this.
+% 3. Use braces in \providecommand in begin.bib to better support
+% latex2html. TeX style length assignments OK with recent versions
+% of latex2html - 1.71 (2002/2/1) or later is strongly recommended.
+% Use of the language field still causes trouble with latex2html.
+% Thanks to Federico Beffa for reporting this.
+% 4. Added IEEEtran.bst ID and version comment string to .bbl output.
+% 5. Provide a \BIBdecl hook that allows the user to execute commands
+% just prior to the first entry.
+% 6. Use default urlstyle (is using url.sty) of "same" rather than rm to
+% better work with a wider variety of bibliography styles.
+% 7. Changed month abbreviations from Sept., July and June to Sep., Jul.,
+% and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann
+% for reporting this.
+% 8. Control entry types should not be considered when calculating longest
+% label width.
+% 9. Added alias www for electronic/online.
+% 10. Added CTLname_url_prefix control entry type.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -67,10 +98,11 @@
% NOTE: The recommended LaTeX command to invoke a control entry type is:
%
%\makeatletter
-%\def\bstctlcite#1{\@bsphack
-% \@for\@citeb:=#1\do{%
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+% \@for\@citeb:=#2\do{%
% \edef\@citeb{\expandafter\@firstofone\@citeb}%
-% \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi}%
+% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
% \@esphack}
%\makeatother
%
@@ -137,6 +169,10 @@ FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
FUNCTION {default.name.latex.cmd}{ "" }
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
% #0 turns off the terminal startup banner/completed message so as to
@@ -151,9 +187,9 @@ FUNCTION {is.print.banners.to.terminal} { #1 }
%% FILE VERSION AND BANNER %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-FUNCTION{bst.file.version} { "1.11" }
-FUNCTION{bst.file.date} { "2003/04/02" }
-FUNCTION{bst.file.website} { "http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/" }
+FUNCTION{bst.file.version} { "1.12" }
+FUNCTION{bst.file.date} { "2007/01/11" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
FUNCTION {banner.message}
{ is.print.banners.to.terminal
@@ -164,7 +200,7 @@ FUNCTION {banner.message}
top$
"-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
top$
- "** Sorting version - not for use with work to be submitted to the IEEE."
+ "** Sorting version - not for normal IEEE work."
top$
}
{ skip$ }
@@ -211,7 +247,6 @@ FUNCTION {bbl.standard}{ "Std." }
FUNCTION {bbl.techrep}{ "Tech. Rep." }
FUNCTION {bbl.mthesis}{ "Master's thesis" }
FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
-FUNCTION {bbl.urlprefix}{ "[Online]. Available:" }
FUNCTION {bbl.st}{ "st" }
FUNCTION {bbl.nd}{ "nd" }
FUNCTION {bbl.rd}{ "rd" }
@@ -240,10 +275,10 @@ MACRO {feb} {"Feb."}
MACRO {mar} {"Mar."}
MACRO {apr} {"Apr."}
MACRO {may} {"May"}
-MACRO {jun} {"June"}
-MACRO {jul} {"July"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
MACRO {aug} {"Aug."}
-MACRO {sep} {"Sept."}
+MACRO {sep} {"Sep."}
MACRO {oct} {"Oct."}
MACRO {nov} {"Nov."}
MACRO {dec} {"Dec."}
@@ -298,6 +333,7 @@ ENTRY
CTLdash_repeated_names
CTLname_format_string
CTLname_latex_cmd
+ CTLname_url_prefix
}
{}
{ label }
@@ -342,7 +378,8 @@ STRINGS { bibinfo
t
ALTinterwordstretchfactor
name.format.string
- name.latex.cmd}
+ name.latex.cmd
+ name.url.prefix}
@@ -362,6 +399,7 @@ FUNCTION {initialize.controls}
default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
default.name.format.string 'name.format.string :=
default.name.latex.cmd 'name.latex.cmd :=
+ default.name.url.prefix 'name.url.prefix :=
}
@@ -1023,37 +1061,39 @@ FUNCTION {start.entry}
% code sequences are those that control the alternate interword spacing and
% foreign language hyphenation patterns. The heavy use of \providecommand
% gives users a way to override the defaults. Special thanks to Javier Bezos,
-% Johannes Braams, Robin Fairburns, Heiko Oberdiek, Donald Arseneau and all
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
% the other gurus on comp.text.tex for their help and advice on the topic of
% \selectlanguage, Babel and BibTeX.
FUNCTION {begin.bib}
-{ preamble$ empty$ 'skip$
+{ "% Generated by IEEEtranS.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ preamble$ empty$ 'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" longest.label * "}" *
write$ newline$
"\providecommand{\url}[1]{#1}"
write$ newline$
- "\csname url@rmstyle\endcsname"
+ "\csname url@samestyle\endcsname"
write$ newline$
"\providecommand{\newblock}{\relax}"
write$ newline$
"\providecommand{\bibinfo}[2]{#2}"
write$ newline$
- "\providecommand\BIBentrySTDinterwordspacing{\spaceskip=0pt\relax}"
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
write$ newline$
- "\providecommand\BIBentryALTinterwordstretchfactor{"
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
ALTinterwordstretchfactor * "}" *
write$ newline$
- "\providecommand\BIBentryALTinterwordspacing{\spaceskip=\fontdimen2\font plus "
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
write$ newline$
"\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
write$ newline$
- "\providecommand\BIBforeignlanguage[2]{{%"
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
write$ newline$
"\expandafter\ifx\csname l@#1\endcsname\relax"
write$ newline$
- "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%"
+ "\typeout{** WARNING: IEEEtranS.bst: No hyphenation pattern has been}%"
write$ newline$
"\typeout{** loaded for the language `#1'. Using the pattern for}%"
write$ newline$
@@ -1067,6 +1107,10 @@ FUNCTION {begin.bib}
write$ newline$
"#2}}"
write$ newline$
+ "\providecommand{\BIBdecl}{\relax}"
+ write$ newline$
+ "\BIBdecl"
+ write$ newline$
}
FUNCTION {end.bib}
@@ -1100,13 +1144,17 @@ FUNCTION {initialize.longest.label}
}
FUNCTION {longest.label.pass}
-{ number.label int.to.str$ 'label :=
- number.label #1 + 'number.label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ { skip$ }
+ if$
}
- 'skip$
if$
}
@@ -1197,20 +1245,16 @@ FUNCTION {format.names}
if$
namesleft #1 >
{ ", " * t do.name.latex.cmd * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
- {
- " " * bbl.etal emphasize *
- }
- {
+ { " " * bbl.etal emphasize * }
+ { numnames #2 >
+ { "," * }
+ { skip$ }
+ if$
bbl.and
space.word * t do.name.latex.cmd *
}
@@ -1671,11 +1715,11 @@ FUNCTION {format.pages}
FUNCTION {format.tech.report.number}
{ number "number" bibinfo.check
+ this.to.prev.status
+ this.status.std
+ cap.status.std
type duplicate$ empty$
{ pop$
- this.to.prev.status
- this.status.std
- cap.status.std
bbl.techrep
}
{ skip$ }
@@ -1683,10 +1727,7 @@ FUNCTION {format.tech.report.number}
"type" bibinfo.check
swap$ duplicate$ empty$
{ pop$ }
- { this.to.prev.status
- this.status.std
- cap.status.std
- tie.or.space.prefix * * }
+ { tie.or.space.prefix * * }
if$
}
@@ -1890,7 +1931,7 @@ FUNCTION {format.url}
{ this.to.prev.status
this.status.std
cap.yes 'status.cap :=
- bbl.urlprefix " " *
+ name.url.prefix " " *
"\url{" * url * "}" *
punct.no 'this.status.punct :=
punct.period 'prev.status.punct :=
@@ -2296,7 +2337,7 @@ FUNCTION {IEEEtranBSTCTL}
{ skip$ }
{ CTLalt_stretch_factor
'ALTinterwordstretchfactor :=
- "\renewcommand\BIBentryALTinterwordstretchfactor{"
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
ALTinterwordstretchfactor * "}" *
write$ newline$
}
@@ -2323,8 +2364,15 @@ FUNCTION {IEEEtranBSTCTL}
'name.latex.cmd :=
}
if$
-
-
+ CTLname_url_prefix
+ missing$
+ { skip$ }
+ { CTLname_url_prefix
+ 'name.url.prefix :=
+ }
+ if$
+
+
num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
{ "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
@@ -2341,6 +2389,7 @@ FUNCTION {conference}{inproceedings}
FUNCTION {online}{electronic}
FUNCTION {internet}{electronic}
FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
FUNCTION {default.type}{misc}
@@ -2516,7 +2565,15 @@ FUNCTION {presort}
if$
" "
*
- year empty.field.to.null.string sortify
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string sortify
*
" "
*
diff --git a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSA.bst b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSA.bst
new file mode 100644
index 00000000000..4d0d8b61f8b
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSA.bst
@@ -0,0 +1,2778 @@
+%%
+%% IEEEtranSA.bst
+%% BibTeX Bibliography Style file
+%% Sorting alpha version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
+%% Version 1.12 (2006/01/11)
+%%
+%% Copyright (c) 2003-2007 Michael Shell
+%%
+%% Original starting code base and algorithms obtained from the output of
+%% Patrick W. Daly's makebst package as well as from prior versions of
+%% IEEE BibTeX styles:
+%%
+%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
+%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
+%%
+%% Added sorting code is from plain.bst, alpha code is from alpha.bst.
+%%
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
+%% and/or
+%% http://www.ieee.org/
+%%
+%% For use with BibTeX version 0.99a or later
+%%
+%% This is an alpha citation style.
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
+%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
+%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
+%%*************************************************************************
+%
+%
+% Changelog:
+%
+% 1.12 (2007/01/11) Initial release
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are the defaults for the user adjustable controls. The values used
+% here can be overridden by the user via IEEEtranBSTCTL entry type.
+
+% NOTE: The recommended LaTeX command to invoke a control entry type is:
+%
+%\makeatletter
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+% \@for\@citeb:=#2\do{%
+% \edef\@citeb{\expandafter\@firstofone\@citeb}%
+% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+% \@esphack}
+%\makeatother
+%
+% It is called at the start of the document, before the first \cite, like:
+% \bstctlcite{IEEEexample:BSTcontrol}
+%
+% IEEEtran.cls V1.6 and later does provide this command.
+
+
+
+% #0 turns off the display of the number for articles.
+% #1 enables
+FUNCTION {default.is.use.number.for.article} { #1 }
+
+
+% #0 turns off the display of the paper and type fields in @inproceedings.
+% #1 enables
+FUNCTION {default.is.use.paper} { #1 }
+
+
+% #0 turns off the forced use of "et al."
+% #1 enables
+FUNCTION {default.is.forced.et.al} { #0 }
+
+% The maximum number of names that can be present beyond which an "et al."
+% usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
+% is not greater than this value!
+% Note: There are many instances of references in IEEE journals which have
+% a very large number of authors as well as instances in which "et al." is
+% used profusely.
+FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
+
+% The number of names that will be shown with a forced "et al.".
+% Must be less than or equal to max.num.names.before.forced.et.al
+FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
+
+
+% #0 turns off the alternate interword spacing for entries with URLs.
+% #1 enables
+FUNCTION {default.is.use.alt.interword.spacing} { #1 }
+
+% If alternate interword spacing for entries with URLs is enabled, this is
+% the interword spacing stretch factor that will be used. For example, the
+% default "4" here means that the interword spacing in entries with URLs can
+% stretch to four times normal. Does not have to be an integer. Note that
+% the value specified here can be overridden by the user in their LaTeX
+% code via a command such as:
+% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
+% that via the IEEEtranBSTCTL entry type.
+FUNCTION {default.ALTinterwordstretchfactor} { "4" }
+
+
+% #0 turns off the "dashification" of repeated (i.e., identical to those
+% of the previous entry) names. IEEE normally does this.
+% #1 enables
+FUNCTION {default.is.dash.repeated.names} { #1 }
+
+
+% The default name format control string.
+FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
+
+
+% The default LaTeX font command for the names.
+FUNCTION {default.name.latex.cmd}{ "" }
+
+
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
+% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
+
+% #0 turns off the terminal startup banner/completed message so as to
+% operate more quietly.
+% #1 enables
+FUNCTION {is.print.banners.to.terminal} { #1 }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FILE VERSION AND BANNER %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION{bst.file.version} { "1.12" }
+FUNCTION{bst.file.date} { "2007/01/11" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
+
+FUNCTION {banner.message}
+{ is.print.banners.to.terminal
+ { "-- IEEEtranSA.bst version" " " * bst.file.version *
+ " (" * bst.file.date * ") " * "by Michael Shell." *
+ top$
+ "-- " bst.file.website *
+ top$
+ "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
+ top$
+ "** Sorting Alpha version - not for normal IEEE work."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {completed.message}
+{ is.print.banners.to.terminal
+ { ""
+ top$
+ "Done."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING CONSTANTS %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {bbl.and}{ "and" }
+FUNCTION {bbl.etal}{ "et~al." }
+FUNCTION {bbl.editors}{ "eds." }
+FUNCTION {bbl.editor}{ "ed." }
+FUNCTION {bbl.edition}{ "ed." }
+FUNCTION {bbl.volume}{ "vol." }
+FUNCTION {bbl.of}{ "of" }
+FUNCTION {bbl.number}{ "no." }
+FUNCTION {bbl.in}{ "in" }
+FUNCTION {bbl.pages}{ "pp." }
+FUNCTION {bbl.page}{ "p." }
+FUNCTION {bbl.chapter}{ "ch." }
+FUNCTION {bbl.paper}{ "paper" }
+FUNCTION {bbl.part}{ "pt." }
+FUNCTION {bbl.patent}{ "Patent" }
+FUNCTION {bbl.patentUS}{ "U.S." }
+FUNCTION {bbl.revision}{ "Rev." }
+FUNCTION {bbl.series}{ "ser." }
+FUNCTION {bbl.standard}{ "Std." }
+FUNCTION {bbl.techrep}{ "Tech. Rep." }
+FUNCTION {bbl.mthesis}{ "Master's thesis" }
+FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
+FUNCTION {bbl.st}{ "st" }
+FUNCTION {bbl.nd}{ "nd" }
+FUNCTION {bbl.rd}{ "rd" }
+FUNCTION {bbl.th}{ "th" }
+
+
+% This is the LaTeX spacer that is used when a larger than normal space
+% is called for (such as just before the address:publisher).
+FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
+
+% The LaTeX code for dashes that are used to represent repeated names.
+% Note: Some older IEEE journals used something like
+% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
+% the baseline. However, IEEE now uses a thinner, above baseline,
+% six dash long sequence.
+FUNCTION {repeated.name.dashes} { "------" }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% PREDEFINED STRING MACROS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+MACRO {jan} {"Jan."}
+MACRO {feb} {"Feb."}
+MACRO {mar} {"Mar."}
+MACRO {apr} {"Apr."}
+MACRO {may} {"May"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
+MACRO {aug} {"Aug."}
+MACRO {sep} {"Sep."}
+MACRO {oct} {"Oct."}
+MACRO {nov} {"Nov."}
+MACRO {dec} {"Dec."}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% ENTRY FIELDS %%
+%%%%%%%%%%%%%%%%%%
+
+ENTRY
+ { address
+ assignee
+ author
+ booktitle
+ chapter
+ day
+ dayfiled
+ edition
+ editor
+ howpublished
+ institution
+ intype
+ journal
+ key
+ language
+ month
+ monthfiled
+ nationality
+ note
+ number
+ organization
+ pages
+ paper
+ publisher
+ school
+ series
+ revision
+ title
+ type
+ url
+ volume
+ year
+ yearfiled
+ CTLuse_article_number
+ CTLuse_paper
+ CTLuse_forced_etal
+ CTLmax_names_forced_etal
+ CTLnames_show_etal
+ CTLuse_alt_spacing
+ CTLalt_stretch_factor
+ CTLdash_repeated_names
+ CTLname_format_string
+ CTLname_latex_cmd
+ CTLname_url_prefix
+ }
+ {}
+ { label extra.label sort.label }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% INTEGER VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+INTEGERS { prev.status.punct this.status.punct punct.std
+ punct.no punct.comma punct.period
+ prev.status.space this.status.space space.std
+ space.no space.normal space.large
+ prev.status.quote this.status.quote quote.std
+ quote.no quote.close
+ prev.status.nline this.status.nline nline.std
+ nline.no nline.newblock
+ status.cap cap.std
+ cap.no cap.yes}
+
+INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
+
+INTEGERS { is.use.number.for.article
+ is.use.paper
+ is.forced.et.al
+ max.num.names.before.forced.et.al
+ num.names.shown.with.forced.et.al
+ is.use.alt.interword.spacing
+ is.dash.repeated.names}
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+STRINGS { bibinfo
+ longest.label
+ oldname
+ s
+ t
+ ALTinterwordstretchfactor
+ name.format.string
+ name.latex.cmd
+ name.url.prefix}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOW LEVEL FUNCTIONS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.controls}
+{ default.is.use.number.for.article 'is.use.number.for.article :=
+ default.is.use.paper 'is.use.paper :=
+ default.is.forced.et.al 'is.forced.et.al :=
+ default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
+ default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
+ default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
+ default.is.dash.repeated.names 'is.dash.repeated.names :=
+ default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
+ default.name.format.string 'name.format.string :=
+ default.name.latex.cmd 'name.latex.cmd :=
+ default.name.url.prefix 'name.url.prefix :=
+}
+
+
+% This IEEEtran.bst features a very powerful and flexible mechanism for
+% controlling the capitalization, punctuation, spacing, quotation, and
+% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
+% or use the newline/newblock feature, but it has been implemented for
+% possible future use.) The output states of IEEEtran.bst consist of
+% multiple independent attributes and, as such, can be thought of as being
+% vectors, rather than the simple scalar values ("before.all",
+% "mid.sentence", etc.) used in most other .bst files.
+%
+% The more flexible and complex design used here was motivated in part by
+% IEEE's rather unusual bibliography style. For example, IEEE ends the
+% previous field item with a period and large space prior to the publisher
+% address; the @electronic entry types use periods as inter-item punctuation
+% rather than the commas used by the other entry types; and URLs are never
+% followed by periods even though they are the last item in the entry.
+% Although it is possible to accommodate these features with the conventional
+% output state system, the seemingly endless exceptions make for convoluted,
+% unreliable and difficult to maintain code.
+%
+% IEEEtran.bst's output state system can be easily understood via a simple
+% illustration of two most recently formatted entry fields (on the stack):
+%
+% CURRENT_ITEM
+% "PREVIOUS_ITEM
+%
+% which, in this example, is to eventually appear in the bibliography as:
+%
+% "PREVIOUS_ITEM," CURRENT_ITEM
+%
+% It is the job of the output routine to take the previous item off of the
+% stack (while leaving the current item at the top of the stack), apply its
+% trailing punctuation (including closing quote marks) and spacing, and then
+% to write the result to BibTeX's output buffer:
+%
+% "PREVIOUS_ITEM,"
+%
+% Punctuation (and spacing) between items is often determined by both of the
+% items rather than just the first one. The presence of quotation marks
+% further complicates the situation because, in standard English, trailing
+% punctuation marks are supposed to be contained within the quotes.
+%
+% IEEEtran.bst maintains two output state (aka "status") vectors which
+% correspond to the previous and current (aka "this") items. Each vector
+% consists of several independent attributes which track punctuation,
+% spacing, quotation, and newlines. Capitalization status is handled by a
+% separate scalar because the format routines, not the output routine,
+% handle capitalization and, therefore, there is no need to maintain the
+% capitalization attribute for both the "previous" and "this" items.
+%
+% When a format routine adds a new item, it copies the current output status
+% vector to the previous output status vector and (usually) resets the
+% current (this) output status vector to a "standard status" vector. Using a
+% "standard status" vector in this way allows us to redefine what we mean by
+% "standard status" at the start of each entry handler and reuse the same
+% format routines under the various inter-item separation schemes. For
+% example, the standard status vector for the @book entry type may use
+% commas for item separators, while the @electronic type may use periods,
+% yet both entry handlers exploit many of the exact same format routines.
+%
+% Because format routines have write access to the output status vector of
+% the previous item, they can override the punctuation choices of the
+% previous format routine! Therefore, it becomes trivial to implement rules
+% such as "Always use a period and a large space before the publisher." By
+% pushing the generation of the closing quote mark to the output routine, we
+% avoid all the problems caused by having to close a quote before having all
+% the information required to determine what the punctuation should be.
+%
+% The IEEEtran.bst output state system can easily be expanded if needed.
+% For instance, it is easy to add a "space.tie" attribute value if the
+% bibliography rules mandate that two items have to be joined with an
+% unbreakable space.
+
+FUNCTION {initialize.status.constants}
+{ #0 'punct.no :=
+ #1 'punct.comma :=
+ #2 'punct.period :=
+ #0 'space.no :=
+ #1 'space.normal :=
+ #2 'space.large :=
+ #0 'quote.no :=
+ #1 'quote.close :=
+ #0 'cap.no :=
+ #1 'cap.yes :=
+ #0 'nline.no :=
+ #1 'nline.newblock :=
+}
+
+FUNCTION {std.status.using.comma}
+{ punct.comma 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.no 'cap.std :=
+}
+
+FUNCTION {std.status.using.period}
+{ punct.period 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.yes 'cap.std :=
+}
+
+FUNCTION {initialize.prev.this.status}
+{ punct.no 'prev.status.punct :=
+ space.no 'prev.status.space :=
+ quote.no 'prev.status.quote :=
+ nline.no 'prev.status.nline :=
+ punct.no 'this.status.punct :=
+ space.no 'this.status.space :=
+ quote.no 'this.status.quote :=
+ nline.no 'this.status.nline :=
+ cap.yes 'status.cap :=
+}
+
+FUNCTION {this.status.std}
+{ punct.std 'this.status.punct :=
+ space.std 'this.status.space :=
+ quote.std 'this.status.quote :=
+ nline.std 'this.status.nline :=
+}
+
+FUNCTION {cap.status.std}{ cap.std 'status.cap := }
+
+FUNCTION {this.to.prev.status}
+{ this.status.punct 'prev.status.punct :=
+ this.status.space 'prev.status.space :=
+ this.status.quote 'prev.status.quote :=
+ this.status.nline 'prev.status.nline :=
+}
+
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ { skip$ }
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ { skip$ }
+ if$
+}
+
+
+% convert the strings "yes" or "no" to #1 or #0 respectively
+FUNCTION {yes.no.to.int}
+{ "l" change.case$ duplicate$
+ "yes" =
+ { pop$ #1 }
+ { duplicate$ "no" =
+ { pop$ #0 }
+ { "unknown boolean " quote$ * swap$ * quote$ *
+ " in " * cite$ * warning$
+ #0
+ }
+ if$
+ }
+ if$
+}
+
+
+% pushes true if the single char string on the stack is in the
+% range of "0" to "9"
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+% multiplies the integer on the stack by a factor of 10
+FUNCTION {bump.int.mag}
+{ #0 'multiresult :=
+ { duplicate$ #0 > }
+ { #1 -
+ multiresult #10 +
+ 'multiresult :=
+ }
+ while$
+pop$
+multiresult
+}
+
+% converts a single character string on the stack to an integer
+FUNCTION {char.to.integer}
+{ duplicate$
+ is.num
+ { chr.to.int$ "0" chr.to.int$ - }
+ {"noninteger character " quote$ * swap$ * quote$ *
+ " in integer field of " * cite$ * warning$
+ #0
+ }
+ if$
+}
+
+% converts a string on the stack to an integer
+FUNCTION {string.to.integer}
+{ duplicate$ text.length$ 'namesleft :=
+ #1 'nameptr :=
+ #0 'numnames :=
+ { nameptr namesleft > not }
+ { duplicate$ nameptr #1 substring$
+ char.to.integer numnames bump.int.mag +
+ 'numnames :=
+ nameptr #1 +
+ 'nameptr :=
+ }
+ while$
+pop$
+numnames
+}
+
+
+
+
+% The output routines write out the *next* to the top (previous) item on the
+% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
+% the output status for the top two items on the stack, these output
+% routines have to consider the previous output status (which corresponds to
+% the item that is being output). Full independent control of punctuation,
+% closing quote marks, spacing, and newblock is provided.
+%
+% "output.nonnull" does not check for the presence of a previous empty
+% item.
+%
+% "output" does check for the presence of a previous empty item and will
+% remove an empty item rather than outputing it.
+%
+% "output.warn" is like "output", but will issue a warning if it detects
+% an empty item.
+
+FUNCTION {output.nonnull}
+{ swap$
+ prev.status.punct punct.comma =
+ { "," * }
+ { skip$ }
+ if$
+ prev.status.punct punct.period =
+ { add.period$ }
+ { skip$ }
+ if$
+ prev.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+ prev.status.space space.normal =
+ { " " * }
+ { skip$ }
+ if$
+ prev.status.space space.large =
+ { large.space * }
+ { skip$ }
+ if$
+ write$
+ prev.status.nline nline.newblock =
+ { newline$ "\newblock " write$ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.warn}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+% "fin.entry" is the output routine that handles the last item of the entry
+% (which will be on the top of the stack when "fin.entry" is called).
+
+FUNCTION {fin.entry}
+{ this.status.punct punct.no =
+ { skip$ }
+ { add.period$ }
+ if$
+ this.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+write$
+newline$
+}
+
+
+FUNCTION {is.last.char.not.punct}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {is.multiple.pages}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {do.name.latex.cmd}
+{ name.latex.cmd
+ empty$
+ { skip$ }
+ { name.latex.cmd "{" * swap$ * "}" * }
+ if$
+}
+
+% IEEEtran.bst uses its own \BIBforeignlanguage command which directly
+% invokes the TeX hyphenation patterns without the need of the Babel
+% package. Babel does a lot more than switch hyphenation patterns and
+% its loading can cause unintended effects in many class files (such as
+% IEEEtran.cls).
+FUNCTION {select.language}
+{ duplicate$ empty$ 'pop$
+ { language empty$ 'skip$
+ { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {space.word}{ " " swap$ * " " * }
+
+
+% Field Conditioners, Converters, Checkers and External Interfaces
+
+FUNCTION {empty.field.to.null.string}
+{ duplicate$ empty$
+ { pop$ "" }
+ { skip$ }
+ if$
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ { pop$ }
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {empty.entry.warn}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$ url empty$
+ and and and and and and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+
+% The bibinfo system provides a way for the electronic parsing/acquisition
+% of a bibliography's contents as is done by ReVTeX. For example, a field
+% could be entered into the bibliography as:
+% \bibinfo{volume}{2}
+% Only the "2" would show up in the document, but the LaTeX \bibinfo command
+% could do additional things with the information. IEEEtran.bst does provide
+% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
+% currently not used as the bogus bibinfo functions defined here output the
+% entry values directly without the \bibinfo wrapper. The bibinfo functions
+% themselves (and the calls to them) are retained for possible future use.
+%
+% bibinfo.check avoids acting on missing fields while bibinfo.warn will
+% issue a warning message if a missing field is detected. Prior to calling
+% the bibinfo functions, the user should push the field value and then its
+% name string, in that order.
+
+FUNCTION {bibinfo.check}
+{ swap$ duplicate$ missing$
+ { pop$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ pop$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {bibinfo.warn}
+{ swap$ duplicate$ missing$
+ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ "empty " swap$ * " in " * cite$ * warning$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+
+% IEEE separates large numbers with more than 4 digits into groups of
+% three. IEEE uses a small space to separate these number groups.
+% Typical applications include patent and page numbers.
+
+% number of consecutive digits required to trigger the group separation.
+FUNCTION {large.number.trigger}{ #5 }
+
+% For numbers longer than the trigger, this is the blocksize of the groups.
+% The blocksize must be less than the trigger threshold, and 2 * blocksize
+% must be greater than the trigger threshold (can't do more than one
+% separation on the initial trigger).
+FUNCTION {large.number.blocksize}{ #3 }
+
+% What is actually inserted between the number groups.
+FUNCTION {large.number.separator}{ "\," }
+
+% So as to save on integer variables by reusing existing ones, numnames
+% holds the current number of consecutive digits read and nameptr holds
+% the number that will trigger an inserted space.
+FUNCTION {large.number.separate}
+{ 't :=
+ ""
+ #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ { t empty$ not }
+ { t #-1 #1 substring$ is.num
+ { numnames #1 + 'numnames := }
+ { #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ }
+ if$
+ t #-1 #1 substring$ swap$ *
+ t #-2 global.max$ substring$ 't :=
+ numnames nameptr =
+ { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
+ nameptr large.number.blocksize - #1 + global.max$ substring$
+ large.number.separator swap$ * *
+ nameptr large.number.blocksize - 'numnames :=
+ large.number.blocksize #1 + 'nameptr :=
+ }
+ { skip$ }
+ if$
+ }
+ while$
+}
+
+% Converts all single dashes "-" to double dashes "--".
+FUNCTION {n.dashify}
+{ large.number.separate
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+
+% This function detects entries with names that are identical to that of
+% the previous entry and replaces the repeated names with dashes (if the
+% "is.dash.repeated.names" user control is nonzero).
+FUNCTION {name.or.dash}
+{ 's :=
+ oldname empty$
+ { s 'oldname := s }
+ { s oldname =
+ { is.dash.repeated.names
+ { repeated.name.dashes }
+ { s 'oldname := s }
+ if$
+ }
+ { s 'oldname := s }
+ if$
+ }
+ if$
+}
+
+% Converts the number string on the top of the stack to
+% "numerical ordinal form" (e.g., "7" to "7th"). There is
+% no artificial limit to the upper bound of the numbers as the
+% least significant digit always determines the ordinal form.
+FUNCTION {num.to.ordinal}
+{ duplicate$ #-1 #1 substring$ "1" =
+ { bbl.st * }
+ { duplicate$ #-1 #1 substring$ "2" =
+ { bbl.nd * }
+ { duplicate$ #-1 #1 substring$ "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+% If the string on the top of the stack begins with a number,
+% (e.g., 11th) then replace the string with the leading number
+% it contains. Otherwise retain the string as-is. s holds the
+% extracted number, t holds the part of the string that remains
+% to be scanned.
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+% Converts the word number string on the top of the stack to
+% Arabic string form. Will be successful up to "tenth".
+FUNCTION {word.to.num}
+{ duplicate$ "l" change.case$ 's :=
+ s "first" =
+ { pop$ "1" }
+ { skip$ }
+ if$
+ s "second" =
+ { pop$ "2" }
+ { skip$ }
+ if$
+ s "third" =
+ { pop$ "3" }
+ { skip$ }
+ if$
+ s "fourth" =
+ { pop$ "4" }
+ { skip$ }
+ if$
+ s "fifth" =
+ { pop$ "5" }
+ { skip$ }
+ if$
+ s "sixth" =
+ { pop$ "6" }
+ { skip$ }
+ if$
+ s "seventh" =
+ { pop$ "7" }
+ { skip$ }
+ if$
+ s "eighth" =
+ { pop$ "8" }
+ { skip$ }
+ if$
+ s "ninth" =
+ { pop$ "9" }
+ { skip$ }
+ if$
+ s "tenth" =
+ { pop$ "10" }
+ { skip$ }
+ if$
+}
+
+
+% Converts the string on the top of the stack to numerical
+% ordinal (e.g., "11th") form.
+FUNCTION {convert.edition}
+{ duplicate$ empty$ 'skip$
+ { duplicate$ #1 #1 substring$ is.num
+ { extract.num
+ num.to.ordinal
+ }
+ { word.to.num
+ duplicate$ #1 #1 substring$ is.num
+ { num.to.ordinal }
+ { "edition ordinal word " quote$ * edition * quote$ *
+ " may be too high (or improper) for conversion" * " in " * cite$ * warning$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LATEX BIBLIOGRAPHY CODE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {start.entry}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ "]{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ initialize.prev.this.status
+}
+
+% Here we write out all the LaTeX code that we will need. The most involved
+% code sequences are those that control the alternate interword spacing and
+% foreign language hyphenation patterns. The heavy use of \providecommand
+% gives users a way to override the defaults. Special thanks to Javier Bezos,
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
+% the other gurus on comp.text.tex for their help and advice on the topic of
+% \selectlanguage, Babel and BibTeX.
+FUNCTION {begin.bib}
+{ "% Generated by IEEEtranSA.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ "\providecommand{\etalchar}[1]{$^{#1}$}"
+ write$ newline$
+ preamble$ empty$ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" *
+ write$ newline$
+ "\providecommand{\url}[1]{#1}"
+ write$ newline$
+ "\csname url@samestyle\endcsname"
+ write$ newline$
+ "\providecommand{\newblock}{\relax}"
+ write$ newline$
+ "\providecommand{\bibinfo}[2]{#2}"
+ write$ newline$
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
+ write$ newline$
+ "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
+ write$ newline$
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
+ write$ newline$
+ "\expandafter\ifx\csname l@#1\endcsname\relax"
+ write$ newline$
+ "\typeout{** WARNING: IEEEtranSA.bst: No hyphenation pattern has been}%"
+ write$ newline$
+ "\typeout{** loaded for the language `#1'. Using the pattern for}%"
+ write$ newline$
+ "\typeout{** the default language instead.}%"
+ write$ newline$
+ "\else"
+ write$ newline$
+ "\language=\csname l@#1\endcsname"
+ write$ newline$
+ "\fi"
+ write$ newline$
+ "#2}}"
+ write$ newline$
+ "\providecommand{\BIBdecl}{\relax}"
+ write$ newline$
+ "\BIBdecl"
+ write$ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$ "\end{thebibliography}" write$ newline$ }
+
+FUNCTION {if.url.alt.interword.spacing}
+{ is.use.alt.interword.spacing
+ {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$}
+ { skip$ }
+ if$
+}
+
+FUNCTION {if.url.std.interword.spacing}
+{ is.use.alt.interword.spacing
+ {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$}
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%% FORMAT HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%%
+
+%% Lower Level Formats (used by higher level formats)
+
+FUNCTION {format.address.org.or.pub.date}
+{ 't :=
+ ""
+ year empty$
+ { "empty year in " cite$ * warning$ }
+ { skip$ }
+ if$
+ address empty$ t empty$ and
+ year empty$ and month empty$ and
+ { skip$ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ address "address" bibinfo.check *
+ t empty$
+ { skip$ }
+ { punct.period 'prev.status.punct :=
+ space.large 'prev.status.space :=
+ address empty$
+ { skip$ }
+ { ": " * }
+ if$
+ t *
+ }
+ if$
+ year empty$ month empty$ and
+ { skip$ }
+ { t empty$ address empty$ and
+ { skip$ }
+ { ", " * }
+ if$
+ month empty$
+ { year empty$
+ { skip$ }
+ { year "year" bibinfo.check * }
+ if$
+ }
+ { month "month" bibinfo.check *
+ year empty$
+ { skip$ }
+ { " " * year "year" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ this.to.prev.status
+ this.status.std
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ name.format.string
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ { nameptr num.names.shown.with.forced.et.al #1 + =
+ numnames max.num.names.before.forced.et.al >
+ is.forced.et.al and and
+ { "others" 't :=
+ #1 'namesleft :=
+ }
+ { skip$ }
+ if$
+ namesleft #1 >
+ { ", " * t do.name.latex.cmd * }
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ { " " * bbl.etal emphasize * }
+ { numnames #2 >
+ { "," * }
+ { skip$ }
+ if$
+ bbl.and
+ space.word * t do.name.latex.cmd *
+ }
+ if$
+ }
+ if$
+ }
+ { t do.name.latex.cmd }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ cap.status.std
+ } if$
+}
+
+
+
+
+%% Higher Level Formats
+
+%% addresses/locations
+
+FUNCTION {format.address}
+{ address duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% author/editor names
+
+FUNCTION {format.authors}{ author "author" format.names }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ { ", " *
+ get.bbl.editor
+ capitalize
+ *
+ }
+ if$
+}
+
+
+
+%% date
+
+FUNCTION {format.date}
+{
+ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "there's a month but no year in " cite$ * warning$ }
+ if$
+ *
+ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ swap$ 'skip$
+ {
+ swap$
+ " " * swap$
+ }
+ if$
+ *
+ }
+ if$
+}
+
+FUNCTION {format.date.electronic}
+{ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$
+ { pop$ }
+ { "there's a month but no year in " cite$ * warning$
+ pop$ ")" * "(" swap$ *
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+ }
+ { swap$
+ { swap$ pop$ ")" * "(" swap$ * }
+ { "(" swap$ * ", " * swap$ * ")" * }
+ if$
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% edition/title
+
+% Note: IEEE considers the edition to be closely associated with
+% the title of a book. So, in IEEEtran.bst the edition is normally handled
+% within the formatting of the title. The format.edition function is
+% retained here for possible future use.
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$ change.case$
+ "edition" bibinfo.check
+ "~" * bbl.edition *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of a conference proceedings.
+% Here we use the "intype" field to provide the user a way to
+% override the word "in" (e.g., with things like "presented at")
+% Use of intype stops the emphasis of the booktitle to indicate that
+% we no longer mean the written conference proceedings, but the
+% conference itself.
+FUNCTION {format.in.booktitle}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ intype missing$
+ { emphasize
+ bbl.in " " *
+ }
+ { intype " " * }
+ if$
+ swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of collection.
+% Here the "intype" field is not supported, but "edition" is.
+FUNCTION {format.in.booktitle.edition}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ "l" change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ bbl.in " " * swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { quote.close 'this.status.quote :=
+ is.last.char.not.punct
+ { punct.std 'this.status.punct := }
+ { punct.no 'this.status.punct := }
+ if$
+ select.language
+ "``" swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title.electronic}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$
+ { skip$ }
+ { select.language }
+ if$
+}
+
+FUNCTION {format.book.title.edition}
+{ title "title" bibinfo.check
+ duplicate$ empty$
+ { "empty title in " cite$ * warning$ }
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$
+ change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.book.title}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% journal
+
+FUNCTION {format.journal}
+{ journal duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% how published
+
+FUNCTION {format.howpublished}
+{ howpublished duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% institutions/organization/publishers/school
+
+FUNCTION {format.institution}
+{ institution duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.organization}
+{ organization duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.address.publisher.date}
+{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
+
+FUNCTION {format.address.publisher.date.nowarn}
+{ publisher "publisher" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.address.organization.date}
+{ organization "organization" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.school}
+{ school duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% volume/number/series/chapter/pages
+
+FUNCTION {format.volume}
+{ volume empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ bbl.volume
+ status.cap
+ { capitalize }
+ { skip$ }
+ if$
+ swap$ tie.or.space.prefix
+ "volume" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number}
+{ number empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ status.cap
+ { bbl.number capitalize }
+ { bbl.number }
+ if$
+ swap$ tie.or.space.prefix
+ "number" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number.if.use.for.article}
+{ is.use.number.for.article
+ { format.number }
+ { "" }
+ if$
+}
+
+% IEEE does not seem to tie the series so closely with the volume
+% and number as is done in other bibliography styles. Instead the
+% series is treated somewhat like an extension of the title.
+FUNCTION {format.series}
+{ series empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.series " " *
+ series "series" bibinfo.check *
+ cap.status.std
+ }
+ if$
+}
+
+
+FUNCTION {format.chapter}
+{ chapter empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+% The intended use of format.paper is for paper numbers of inproceedings.
+% The paper type can be overridden via the type field.
+% We allow the type to be displayed even if the paper number is absent
+% for things like "postdeadline paper"
+FUNCTION {format.paper}
+{ is.use.paper
+ { paper empty$
+ { type empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type "type" bibinfo.check
+ cap.status.std
+ }
+ if$
+ }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.paper }
+ { type "type" bibinfo.check }
+ if$
+ " " * paper
+ "paper" bibinfo.check
+ *
+ cap.status.std
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ duplicate$ is.multiple.pages
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% technical report number
+
+FUNCTION {format.tech.report.number}
+{ number "number" bibinfo.check
+ this.to.prev.status
+ this.status.std
+ cap.status.std
+ type duplicate$ empty$
+ { pop$
+ bbl.techrep
+ }
+ { skip$ }
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+
+
+
+%% note
+
+FUNCTION {format.note}
+{ note empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ punct.period 'this.status.punct :=
+ note #1 #1 substring$
+ duplicate$ "{" =
+ { skip$ }
+ { status.cap
+ { "u" }
+ { "l" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% patent
+
+FUNCTION {format.patent.date}
+{ this.to.prev.status
+ this.status.std
+ year empty$
+ { monthfiled duplicate$ empty$
+ { "monthfiled" bibinfo.check pop$ "" }
+ { "monthfiled" bibinfo.check }
+ if$
+ dayfiled duplicate$ empty$
+ { "dayfiled" bibinfo.check pop$ "" * }
+ { "dayfiled" bibinfo.check
+ monthfiled empty$
+ { "dayfiled without a monthfiled in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ yearfiled empty$
+ { "no year or yearfiled in " cite$ * warning$ }
+ { yearfiled "yearfiled" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ }
+ { month duplicate$ empty$
+ { "month" bibinfo.check pop$ "" }
+ { "month" bibinfo.check }
+ if$
+ day duplicate$ empty$
+ { "day" bibinfo.check pop$ "" * }
+ { "day" bibinfo.check
+ month empty$
+ { "day without a month in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ year "year" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.patent.nationality.type.number}
+{ this.to.prev.status
+ this.status.std
+ nationality duplicate$ empty$
+ { "nationality" bibinfo.warn pop$ "" }
+ { "nationality" bibinfo.check
+ duplicate$ "l" change.case$ "united states" =
+ { pop$ bbl.patentUS }
+ { skip$ }
+ if$
+ " " *
+ }
+ if$
+ type empty$
+ { bbl.patent "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.warn pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+
+
+%% standard
+
+FUNCTION {format.organization.institution.standard.type.number}
+{ this.to.prev.status
+ this.status.std
+ organization duplicate$ empty$
+ { pop$
+ institution duplicate$ empty$
+ { "institution" bibinfo.warn }
+ { "institution" bibinfo.warn " " * }
+ if$
+ }
+ { "organization" bibinfo.warn " " * }
+ if$
+ type empty$
+ { bbl.standard "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.check pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.revision}
+{ revision empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.revision
+ revision tie.or.space.prefix
+ "revision" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+%% thesis
+
+FUNCTION {format.master.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.mthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+FUNCTION {format.phd.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.phdthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+
+
+%% URL
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ cap.yes 'status.cap :=
+ name.url.prefix " " *
+ "\url{" * url * "}" *
+ punct.no 'this.status.punct :=
+ punct.period 'prev.status.punct :=
+ space.normal 'this.status.space :=
+ space.normal 'prev.status.space :=
+ quote.no 'this.status.quote :=
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%
+%% ENTRY HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%
+
+
+% Note: In many journals, IEEE (or the authors) tend not to show the number
+% for articles, so the display of the number is controlled here by the
+% switch "is.use.number.for.article"
+FUNCTION {article}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.journal "journal" bibinfo.check "journal" output.warn
+ format.volume output
+ format.number.if.use.for.article output
+ format.pages output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {book}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ author empty$
+ { skip$ }
+ { format.editors output }
+ if$
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {booklet}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {electronic}
+{ std.status.using.period
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.date.electronic output
+ format.article.title.electronic output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inbook}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {incollection}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle.edition "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.address.publisher.date.nowarn output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inproceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.paper output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {manual}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title.edition "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {mastersthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.master.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {misc}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.pages output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {patent}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.patent.nationality.type.number output
+ format.patent.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {periodical}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ format.organization "organization" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {phdthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.phd.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {proceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {standard}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization.institution.standard.type.number output
+ format.revision output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {techreport}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.institution "institution" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.tech.report.number output.nonnull
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {unpublished}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.date output
+ format.note "note" output.warn
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+
+% The special entry type which provides the user interface to the
+% BST controls
+FUNCTION {IEEEtranBSTCTL}
+{ is.print.banners.to.terminal
+ { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
+ top$
+ }
+ { skip$ }
+ if$
+ CTLuse_article_number
+ empty$
+ { skip$ }
+ { CTLuse_article_number
+ yes.no.to.int
+ 'is.use.number.for.article :=
+ }
+ if$
+ CTLuse_paper
+ empty$
+ { skip$ }
+ { CTLuse_paper
+ yes.no.to.int
+ 'is.use.paper :=
+ }
+ if$
+ CTLuse_forced_etal
+ empty$
+ { skip$ }
+ { CTLuse_forced_etal
+ yes.no.to.int
+ 'is.forced.et.al :=
+ }
+ if$
+ CTLmax_names_forced_etal
+ empty$
+ { skip$ }
+ { CTLmax_names_forced_etal
+ string.to.integer
+ 'max.num.names.before.forced.et.al :=
+ }
+ if$
+ CTLnames_show_etal
+ empty$
+ { skip$ }
+ { CTLnames_show_etal
+ string.to.integer
+ 'num.names.shown.with.forced.et.al :=
+ }
+ if$
+ CTLuse_alt_spacing
+ empty$
+ { skip$ }
+ { CTLuse_alt_spacing
+ yes.no.to.int
+ 'is.use.alt.interword.spacing :=
+ }
+ if$
+ CTLalt_stretch_factor
+ empty$
+ { skip$ }
+ { CTLalt_stretch_factor
+ 'ALTinterwordstretchfactor :=
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ }
+ if$
+ CTLdash_repeated_names
+ empty$
+ { skip$ }
+ { CTLdash_repeated_names
+ yes.no.to.int
+ 'is.dash.repeated.names :=
+ }
+ if$
+ CTLname_format_string
+ empty$
+ { skip$ }
+ { CTLname_format_string
+ 'name.format.string :=
+ }
+ if$
+ CTLname_latex_cmd
+ empty$
+ { skip$ }
+ { CTLname_latex_cmd
+ 'name.latex.cmd :=
+ }
+ if$
+ CTLname_url_prefix
+ missing$
+ { skip$ }
+ { CTLname_url_prefix
+ 'name.url.prefix :=
+ }
+ if$
+
+
+ num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
+ { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
+ max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
+ }
+ { skip$ }
+ if$
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+%% ENTRY ALIASES %%
+%%%%%%%%%%%%%%%%%%%
+FUNCTION {conference}{inproceedings}
+FUNCTION {online}{electronic}
+FUNCTION {internet}{electronic}
+FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
+FUNCTION {default.type}{misc}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% MAIN PROGRAM %%
+%%%%%%%%%%%%%%%%%%
+
+READ
+
+EXECUTE {initialize.controls}
+EXECUTE {initialize.status.constants}
+EXECUTE {banner.message}
+
+
+
+% BEGIN sort code based on that of plain.bst
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ { skip$ }
+ if$
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { "et al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.institution.sort}
+{ author empty$
+ { organization empty$
+ { institution empty$
+ { key empty$
+ { "to sort, need author, organization, institution or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 institution chop.word sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+
+% END sort code based on that of plain.bst
+
+
+
+% alpha.bst code
+STRINGS { last.sort.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s num.names$ 'numnames :=
+ numnames #1 >
+ { numnames #4 >
+ { #3 'namesleft := }
+ { numnames 'namesleft := }
+ if$
+ #1 'nameptr :=
+ ""
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { "{\etalchar{+}}" * }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ numnames #4 >
+ { "{\etalchar{+}}" * }
+ 'skip$
+ if$
+ }
+ { s #1 "{v{}}{l{}}" format.name$
+ duplicate$ text.length$ #2 <
+ { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
+ 'skip$
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.institution.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { institution empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 institution chop.word #3 text.prefix$ }
+ if$
+ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.key.label }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.key.organization.label }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.key.organization.label }
+ { type$ "standard" =
+ { author.key.organization.institution.label }
+ { author.key.label }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string purify$ #-1 #2 substring$
+ *
+ 'label :=
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string purify$ #-1 #4 substring$
+ *
+ sortify 'sort.label :=
+}
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ }
+ { calc.label
+ sort.label
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.sort }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.organization.sort }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.organization.sort }
+ { type$ "standard" =
+ { author.organization.institution.sort }
+ { author.sort }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ *
+ " "
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string sortify
+ *
+ " "
+ *
+ title empty.field.to.null.string
+ sort.format.title
+ *
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.sort.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { last.sort.label sort.label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ sort.label 'last.sort.label :=
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { next.extra "b" =
+ { "a" 'extra.label := }
+ { skip$ }
+ if$
+ label extra.label * 'label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ { skip$ }
+ if$
+ extra.label 'next.extra :=
+ }
+ if$
+}
+
+% End alpha.bst code
+
+
+ITERATE {presort}
+
+SORT
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
+EXECUTE{completed.message}
+
+
+%% That's all folks, mds.
diff --git a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSN.bst b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSN.bst
new file mode 100644
index 00000000000..429bbfaa0b5
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSN.bst
@@ -0,0 +1,2850 @@
+%%
+%% IEEEtranSN.bst
+%% BibTeX Bibliography Style file
+%% Sorting Natbib version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
+%% Version 1.12 (2007/01/11)
+%%
+%% Copyright (c) 2003-2007 Michael Shell
+%%
+%% Original starting code base and algorithms obtained from the output of
+%% Patrick W. Daly's makebst package as well as from prior versions of
+%% IEEE BibTeX styles:
+%%
+%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
+%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
+%%
+%% Added sorting and natbib code is from Patrick W Daly's plainnat.bst
+%% and Oren Patashnik's plain.bst.
+%%
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
+%% and/or
+%% http://www.ieee.org/
+%%
+%% For use with BibTeX version 0.99a or later
+%%
+%% This is a natbib compatible citation style.
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
+%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
+%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
+%%*************************************************************************
+%
+%
+% Changelog:
+%
+% 1.12 (2007/01/11) Initial release
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are the defaults for the user adjustable controls. The values used
+% here can be overridden by the user via IEEEtranBSTCTL entry type.
+
+% NOTE: The recommended LaTeX command to invoke a control entry type is:
+%
+%\makeatletter
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+% \@for\@citeb:=#2\do{%
+% \edef\@citeb{\expandafter\@firstofone\@citeb}%
+% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+% \@esphack}
+%\makeatother
+%
+% It is called at the start of the document, before the first \cite, like:
+% \bstctlcite{IEEEexample:BSTcontrol}
+%
+% IEEEtran.cls V1.6 and later does provide this command.
+
+
+
+% #0 turns off the display of the number for articles.
+% #1 enables
+FUNCTION {default.is.use.number.for.article} { #1 }
+
+
+% #0 turns off the display of the paper and type fields in @inproceedings.
+% #1 enables
+FUNCTION {default.is.use.paper} { #1 }
+
+
+% #0 turns off the forced use of "et al."
+% #1 enables
+FUNCTION {default.is.forced.et.al} { #0 }
+
+% The maximum number of names that can be present beyond which an "et al."
+% usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
+% is not greater than this value!
+% Note: There are many instances of references in IEEE journals which have
+% a very large number of authors as well as instances in which "et al." is
+% used profusely.
+FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
+
+% The number of names that will be shown with a forced "et al.".
+% Must be less than or equal to max.num.names.before.forced.et.al
+FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
+
+
+% #0 turns off the alternate interword spacing for entries with URLs.
+% #1 enables
+FUNCTION {default.is.use.alt.interword.spacing} { #1 }
+
+% If alternate interword spacing for entries with URLs is enabled, this is
+% the interword spacing stretch factor that will be used. For example, the
+% default "4" here means that the interword spacing in entries with URLs can
+% stretch to four times normal. Does not have to be an integer. Note that
+% the value specified here can be overridden by the user in their LaTeX
+% code via a command such as:
+% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
+% that via the IEEEtranBSTCTL entry type.
+FUNCTION {default.ALTinterwordstretchfactor} { "4" }
+
+
+% #0 turns off the "dashification" of repeated (i.e., identical to those
+% of the previous entry) names. IEEE normally does this.
+% #1 enables
+FUNCTION {default.is.dash.repeated.names} { #1 }
+
+
+% The default name format control string.
+FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
+
+
+% The default LaTeX font command for the names.
+FUNCTION {default.name.latex.cmd}{ "" }
+
+
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
+% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
+
+% #0 turns off the terminal startup banner/completed message so as to
+% operate more quietly.
+% #1 enables
+FUNCTION {is.print.banners.to.terminal} { #1 }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FILE VERSION AND BANNER %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION{bst.file.version} { "1.12" }
+FUNCTION{bst.file.date} { "2007/01/11" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
+
+FUNCTION {banner.message}
+{ is.print.banners.to.terminal
+ { "-- IEEEtranSN.bst version" " " * bst.file.version *
+ " (" * bst.file.date * ") " * "by Michael Shell." *
+ top$
+ "-- " bst.file.website *
+ top$
+ "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
+ top$
+ "** Sorting Natbib version - not for normal IEEE work."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {completed.message}
+{ is.print.banners.to.terminal
+ { ""
+ top$
+ "Done."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING CONSTANTS %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {bbl.and}{ "and" }
+FUNCTION {bbl.etal}{ "et~al." }
+FUNCTION {bbl.editors}{ "eds." }
+FUNCTION {bbl.editor}{ "ed." }
+FUNCTION {bbl.edition}{ "ed." }
+FUNCTION {bbl.volume}{ "vol." }
+FUNCTION {bbl.of}{ "of" }
+FUNCTION {bbl.number}{ "no." }
+FUNCTION {bbl.in}{ "in" }
+FUNCTION {bbl.pages}{ "pp." }
+FUNCTION {bbl.page}{ "p." }
+FUNCTION {bbl.chapter}{ "ch." }
+FUNCTION {bbl.paper}{ "paper" }
+FUNCTION {bbl.part}{ "pt." }
+FUNCTION {bbl.patent}{ "Patent" }
+FUNCTION {bbl.patentUS}{ "U.S." }
+FUNCTION {bbl.revision}{ "Rev." }
+FUNCTION {bbl.series}{ "ser." }
+FUNCTION {bbl.standard}{ "Std." }
+FUNCTION {bbl.techrep}{ "Tech. Rep." }
+FUNCTION {bbl.mthesis}{ "Master's thesis" }
+FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
+FUNCTION {bbl.st}{ "st" }
+FUNCTION {bbl.nd}{ "nd" }
+FUNCTION {bbl.rd}{ "rd" }
+FUNCTION {bbl.th}{ "th" }
+
+
+% This is the LaTeX spacer that is used when a larger than normal space
+% is called for (such as just before the address:publisher).
+FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
+
+% The LaTeX code for dashes that are used to represent repeated names.
+% Note: Some older IEEE journals used something like
+% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
+% the baseline. However, IEEE now uses a thinner, above baseline,
+% six dash long sequence.
+FUNCTION {repeated.name.dashes} { "------" }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% PREDEFINED STRING MACROS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+MACRO {jan} {"Jan."}
+MACRO {feb} {"Feb."}
+MACRO {mar} {"Mar."}
+MACRO {apr} {"Apr."}
+MACRO {may} {"May"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
+MACRO {aug} {"Aug."}
+MACRO {sep} {"Sep."}
+MACRO {oct} {"Oct."}
+MACRO {nov} {"Nov."}
+MACRO {dec} {"Dec."}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% ENTRY FIELDS %%
+%%%%%%%%%%%%%%%%%%
+
+ENTRY
+ { address
+ assignee
+ author
+ booktitle
+ chapter
+ day
+ dayfiled
+ edition
+ editor
+ howpublished
+ institution
+ intype
+ journal
+ key
+ language
+ month
+ monthfiled
+ nationality
+ note
+ number
+ organization
+ pages
+ paper
+ publisher
+ school
+ series
+ revision
+ title
+ type
+ url
+ volume
+ year
+ yearfiled
+ CTLuse_article_number
+ CTLuse_paper
+ CTLuse_forced_etal
+ CTLmax_names_forced_etal
+ CTLnames_show_etal
+ CTLuse_alt_spacing
+ CTLalt_stretch_factor
+ CTLdash_repeated_names
+ CTLname_format_string
+ CTLname_latex_cmd
+ CTLname_url_prefix
+ }
+ {}
+ { label extra.label sort.label short.list}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% INTEGER VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+INTEGERS { prev.status.punct this.status.punct punct.std
+ punct.no punct.comma punct.period
+ prev.status.space this.status.space space.std
+ space.no space.normal space.large
+ prev.status.quote this.status.quote quote.std
+ quote.no quote.close
+ prev.status.nline this.status.nline nline.std
+ nline.no nline.newblock
+ status.cap cap.std
+ cap.no cap.yes}
+
+INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
+
+INTEGERS { is.use.number.for.article
+ is.use.paper
+ is.forced.et.al
+ max.num.names.before.forced.et.al
+ num.names.shown.with.forced.et.al
+ is.use.alt.interword.spacing
+ is.dash.repeated.names}
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+STRINGS { bibinfo
+ longest.label
+ oldname
+ s
+ t
+ ALTinterwordstretchfactor
+ name.format.string
+ name.latex.cmd
+ name.url.prefix}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOW LEVEL FUNCTIONS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.controls}
+{ default.is.use.number.for.article 'is.use.number.for.article :=
+ default.is.use.paper 'is.use.paper :=
+ default.is.forced.et.al 'is.forced.et.al :=
+ default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
+ default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
+ default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
+ default.is.dash.repeated.names 'is.dash.repeated.names :=
+ default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
+ default.name.format.string 'name.format.string :=
+ default.name.latex.cmd 'name.latex.cmd :=
+ default.name.url.prefix 'name.url.prefix :=
+}
+
+
+% This IEEEtran.bst features a very powerful and flexible mechanism for
+% controlling the capitalization, punctuation, spacing, quotation, and
+% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
+% or use the newline/newblock feature, but it has been implemented for
+% possible future use.) The output states of IEEEtran.bst consist of
+% multiple independent attributes and, as such, can be thought of as being
+% vectors, rather than the simple scalar values ("before.all",
+% "mid.sentence", etc.) used in most other .bst files.
+%
+% The more flexible and complex design used here was motivated in part by
+% IEEE's rather unusual bibliography style. For example, IEEE ends the
+% previous field item with a period and large space prior to the publisher
+% address; the @electronic entry types use periods as inter-item punctuation
+% rather than the commas used by the other entry types; and URLs are never
+% followed by periods even though they are the last item in the entry.
+% Although it is possible to accommodate these features with the conventional
+% output state system, the seemingly endless exceptions make for convoluted,
+% unreliable and difficult to maintain code.
+%
+% IEEEtran.bst's output state system can be easily understood via a simple
+% illustration of two most recently formatted entry fields (on the stack):
+%
+% CURRENT_ITEM
+% "PREVIOUS_ITEM
+%
+% which, in this example, is to eventually appear in the bibliography as:
+%
+% "PREVIOUS_ITEM," CURRENT_ITEM
+%
+% It is the job of the output routine to take the previous item off of the
+% stack (while leaving the current item at the top of the stack), apply its
+% trailing punctuation (including closing quote marks) and spacing, and then
+% to write the result to BibTeX's output buffer:
+%
+% "PREVIOUS_ITEM,"
+%
+% Punctuation (and spacing) between items is often determined by both of the
+% items rather than just the first one. The presence of quotation marks
+% further complicates the situation because, in standard English, trailing
+% punctuation marks are supposed to be contained within the quotes.
+%
+% IEEEtran.bst maintains two output state (aka "status") vectors which
+% correspond to the previous and current (aka "this") items. Each vector
+% consists of several independent attributes which track punctuation,
+% spacing, quotation, and newlines. Capitalization status is handled by a
+% separate scalar because the format routines, not the output routine,
+% handle capitalization and, therefore, there is no need to maintain the
+% capitalization attribute for both the "previous" and "this" items.
+%
+% When a format routine adds a new item, it copies the current output status
+% vector to the previous output status vector and (usually) resets the
+% current (this) output status vector to a "standard status" vector. Using a
+% "standard status" vector in this way allows us to redefine what we mean by
+% "standard status" at the start of each entry handler and reuse the same
+% format routines under the various inter-item separation schemes. For
+% example, the standard status vector for the @book entry type may use
+% commas for item separators, while the @electronic type may use periods,
+% yet both entry handlers exploit many of the exact same format routines.
+%
+% Because format routines have write access to the output status vector of
+% the previous item, they can override the punctuation choices of the
+% previous format routine! Therefore, it becomes trivial to implement rules
+% such as "Always use a period and a large space before the publisher." By
+% pushing the generation of the closing quote mark to the output routine, we
+% avoid all the problems caused by having to close a quote before having all
+% the information required to determine what the punctuation should be.
+%
+% The IEEEtran.bst output state system can easily be expanded if needed.
+% For instance, it is easy to add a "space.tie" attribute value if the
+% bibliography rules mandate that two items have to be joined with an
+% unbreakable space.
+
+FUNCTION {initialize.status.constants}
+{ #0 'punct.no :=
+ #1 'punct.comma :=
+ #2 'punct.period :=
+ #0 'space.no :=
+ #1 'space.normal :=
+ #2 'space.large :=
+ #0 'quote.no :=
+ #1 'quote.close :=
+ #0 'cap.no :=
+ #1 'cap.yes :=
+ #0 'nline.no :=
+ #1 'nline.newblock :=
+}
+
+FUNCTION {std.status.using.comma}
+{ punct.comma 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.no 'cap.std :=
+}
+
+FUNCTION {std.status.using.period}
+{ punct.period 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.yes 'cap.std :=
+}
+
+FUNCTION {initialize.prev.this.status}
+{ punct.no 'prev.status.punct :=
+ space.no 'prev.status.space :=
+ quote.no 'prev.status.quote :=
+ nline.no 'prev.status.nline :=
+ punct.no 'this.status.punct :=
+ space.no 'this.status.space :=
+ quote.no 'this.status.quote :=
+ nline.no 'this.status.nline :=
+ cap.yes 'status.cap :=
+}
+
+FUNCTION {this.status.std}
+{ punct.std 'this.status.punct :=
+ space.std 'this.status.space :=
+ quote.std 'this.status.quote :=
+ nline.std 'this.status.nline :=
+}
+
+FUNCTION {cap.status.std}{ cap.std 'status.cap := }
+
+FUNCTION {this.to.prev.status}
+{ this.status.punct 'prev.status.punct :=
+ this.status.space 'prev.status.space :=
+ this.status.quote 'prev.status.quote :=
+ this.status.nline 'prev.status.nline :=
+}
+
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ { skip$ }
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ { skip$ }
+ if$
+}
+
+
+% convert the strings "yes" or "no" to #1 or #0 respectively
+FUNCTION {yes.no.to.int}
+{ "l" change.case$ duplicate$
+ "yes" =
+ { pop$ #1 }
+ { duplicate$ "no" =
+ { pop$ #0 }
+ { "unknown boolean " quote$ * swap$ * quote$ *
+ " in " * cite$ * warning$
+ #0
+ }
+ if$
+ }
+ if$
+}
+
+
+% pushes true if the single char string on the stack is in the
+% range of "0" to "9"
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+% multiplies the integer on the stack by a factor of 10
+FUNCTION {bump.int.mag}
+{ #0 'multiresult :=
+ { duplicate$ #0 > }
+ { #1 -
+ multiresult #10 +
+ 'multiresult :=
+ }
+ while$
+pop$
+multiresult
+}
+
+% converts a single character string on the stack to an integer
+FUNCTION {char.to.integer}
+{ duplicate$
+ is.num
+ { chr.to.int$ "0" chr.to.int$ - }
+ {"noninteger character " quote$ * swap$ * quote$ *
+ " in integer field of " * cite$ * warning$
+ #0
+ }
+ if$
+}
+
+% converts a string on the stack to an integer
+FUNCTION {string.to.integer}
+{ duplicate$ text.length$ 'namesleft :=
+ #1 'nameptr :=
+ #0 'numnames :=
+ { nameptr namesleft > not }
+ { duplicate$ nameptr #1 substring$
+ char.to.integer numnames bump.int.mag +
+ 'numnames :=
+ nameptr #1 +
+ 'nameptr :=
+ }
+ while$
+pop$
+numnames
+}
+
+
+
+
+% The output routines write out the *next* to the top (previous) item on the
+% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
+% the output status for the top two items on the stack, these output
+% routines have to consider the previous output status (which corresponds to
+% the item that is being output). Full independent control of punctuation,
+% closing quote marks, spacing, and newblock is provided.
+%
+% "output.nonnull" does not check for the presence of a previous empty
+% item.
+%
+% "output" does check for the presence of a previous empty item and will
+% remove an empty item rather than outputing it.
+%
+% "output.warn" is like "output", but will issue a warning if it detects
+% an empty item.
+
+FUNCTION {output.nonnull}
+{ swap$
+ prev.status.punct punct.comma =
+ { "," * }
+ { skip$ }
+ if$
+ prev.status.punct punct.period =
+ { add.period$ }
+ { skip$ }
+ if$
+ prev.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+ prev.status.space space.normal =
+ { " " * }
+ { skip$ }
+ if$
+ prev.status.space space.large =
+ { large.space * }
+ { skip$ }
+ if$
+ write$
+ prev.status.nline nline.newblock =
+ { newline$ "\newblock " write$ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.warn}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+% "fin.entry" is the output routine that handles the last item of the entry
+% (which will be on the top of the stack when "fin.entry" is called).
+
+FUNCTION {fin.entry}
+{ this.status.punct punct.no =
+ { skip$ }
+ { add.period$ }
+ if$
+ this.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+write$
+newline$
+}
+
+
+FUNCTION {is.last.char.not.punct}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {is.multiple.pages}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {do.name.latex.cmd}
+{ name.latex.cmd
+ empty$
+ { skip$ }
+ { name.latex.cmd "{" * swap$ * "}" * }
+ if$
+}
+
+% IEEEtran.bst uses its own \BIBforeignlanguage command which directly
+% invokes the TeX hyphenation patterns without the need of the Babel
+% package. Babel does a lot more than switch hyphenation patterns and
+% its loading can cause unintended effects in many class files (such as
+% IEEEtran.cls).
+FUNCTION {select.language}
+{ duplicate$ empty$ 'pop$
+ { language empty$ 'skip$
+ { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {space.word}{ " " swap$ * " " * }
+
+
+% Field Conditioners, Converters, Checkers and External Interfaces
+
+FUNCTION {empty.field.to.null.string}
+{ duplicate$ empty$
+ { pop$ "" }
+ { skip$ }
+ if$
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ { pop$ }
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {empty.entry.warn}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$ url empty$
+ and and and and and and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+
+% The bibinfo system provides a way for the electronic parsing/acquisition
+% of a bibliography's contents as is done by ReVTeX. For example, a field
+% could be entered into the bibliography as:
+% \bibinfo{volume}{2}
+% Only the "2" would show up in the document, but the LaTeX \bibinfo command
+% could do additional things with the information. IEEEtran.bst does provide
+% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
+% currently not used as the bogus bibinfo functions defined here output the
+% entry values directly without the \bibinfo wrapper. The bibinfo functions
+% themselves (and the calls to them) are retained for possible future use.
+%
+% bibinfo.check avoids acting on missing fields while bibinfo.warn will
+% issue a warning message if a missing field is detected. Prior to calling
+% the bibinfo functions, the user should push the field value and then its
+% name string, in that order.
+
+FUNCTION {bibinfo.check}
+{ swap$ duplicate$ missing$
+ { pop$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ pop$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {bibinfo.warn}
+{ swap$ duplicate$ missing$
+ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ "empty " swap$ * " in " * cite$ * warning$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+
+% IEEE separates large numbers with more than 4 digits into groups of
+% three. IEEE uses a small space to separate these number groups.
+% Typical applications include patent and page numbers.
+
+% number of consecutive digits required to trigger the group separation.
+FUNCTION {large.number.trigger}{ #5 }
+
+% For numbers longer than the trigger, this is the blocksize of the groups.
+% The blocksize must be less than the trigger threshold, and 2 * blocksize
+% must be greater than the trigger threshold (can't do more than one
+% separation on the initial trigger).
+FUNCTION {large.number.blocksize}{ #3 }
+
+% What is actually inserted between the number groups.
+FUNCTION {large.number.separator}{ "\," }
+
+% So as to save on integer variables by reusing existing ones, numnames
+% holds the current number of consecutive digits read and nameptr holds
+% the number that will trigger an inserted space.
+FUNCTION {large.number.separate}
+{ 't :=
+ ""
+ #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ { t empty$ not }
+ { t #-1 #1 substring$ is.num
+ { numnames #1 + 'numnames := }
+ { #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ }
+ if$
+ t #-1 #1 substring$ swap$ *
+ t #-2 global.max$ substring$ 't :=
+ numnames nameptr =
+ { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
+ nameptr large.number.blocksize - #1 + global.max$ substring$
+ large.number.separator swap$ * *
+ nameptr large.number.blocksize - 'numnames :=
+ large.number.blocksize #1 + 'nameptr :=
+ }
+ { skip$ }
+ if$
+ }
+ while$
+}
+
+% Converts all single dashes "-" to double dashes "--".
+FUNCTION {n.dashify}
+{ large.number.separate
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+
+% This function detects entries with names that are identical to that of
+% the previous entry and replaces the repeated names with dashes (if the
+% "is.dash.repeated.names" user control is nonzero).
+FUNCTION {name.or.dash}
+{ 's :=
+ oldname empty$
+ { s 'oldname := s }
+ { s oldname =
+ { is.dash.repeated.names
+ { repeated.name.dashes }
+ { s 'oldname := s }
+ if$
+ }
+ { s 'oldname := s }
+ if$
+ }
+ if$
+}
+
+% Converts the number string on the top of the stack to
+% "numerical ordinal form" (e.g., "7" to "7th"). There is
+% no artificial limit to the upper bound of the numbers as the
+% least significant digit always determines the ordinal form.
+FUNCTION {num.to.ordinal}
+{ duplicate$ #-1 #1 substring$ "1" =
+ { bbl.st * }
+ { duplicate$ #-1 #1 substring$ "2" =
+ { bbl.nd * }
+ { duplicate$ #-1 #1 substring$ "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+% If the string on the top of the stack begins with a number,
+% (e.g., 11th) then replace the string with the leading number
+% it contains. Otherwise retain the string as-is. s holds the
+% extracted number, t holds the part of the string that remains
+% to be scanned.
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+% Converts the word number string on the top of the stack to
+% Arabic string form. Will be successful up to "tenth".
+FUNCTION {word.to.num}
+{ duplicate$ "l" change.case$ 's :=
+ s "first" =
+ { pop$ "1" }
+ { skip$ }
+ if$
+ s "second" =
+ { pop$ "2" }
+ { skip$ }
+ if$
+ s "third" =
+ { pop$ "3" }
+ { skip$ }
+ if$
+ s "fourth" =
+ { pop$ "4" }
+ { skip$ }
+ if$
+ s "fifth" =
+ { pop$ "5" }
+ { skip$ }
+ if$
+ s "sixth" =
+ { pop$ "6" }
+ { skip$ }
+ if$
+ s "seventh" =
+ { pop$ "7" }
+ { skip$ }
+ if$
+ s "eighth" =
+ { pop$ "8" }
+ { skip$ }
+ if$
+ s "ninth" =
+ { pop$ "9" }
+ { skip$ }
+ if$
+ s "tenth" =
+ { pop$ "10" }
+ { skip$ }
+ if$
+}
+
+
+% Converts the string on the top of the stack to numerical
+% ordinal (e.g., "11th") form.
+FUNCTION {convert.edition}
+{ duplicate$ empty$ 'skip$
+ { duplicate$ #1 #1 substring$ is.num
+ { extract.num
+ num.to.ordinal
+ }
+ { word.to.num
+ duplicate$ #1 #1 substring$ is.num
+ { num.to.ordinal }
+ { "edition ordinal word " quote$ * edition * quote$ *
+ " may be too high (or improper) for conversion" * " in " * cite$ * warning$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LATEX BIBLIOGRAPHY CODE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% from plainnat.bst
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.full }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.full }
+ { author.full }
+ if$
+ }
+ if$
+}
+% END from plainnat.bst
+
+FUNCTION {start.entry}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ initialize.prev.this.status
+}
+
+% Here we write out all the LaTeX code that we will need. The most involved
+% code sequences are those that control the alternate interword spacing and
+% foreign language hyphenation patterns. The heavy use of \providecommand
+% gives users a way to override the defaults. Special thanks to Javier Bezos,
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
+% the other gurus on comp.text.tex for their help and advice on the topic of
+% \selectlanguage, Babel and BibTeX.
+FUNCTION {begin.bib}
+{ "% Generated by IEEEtranSN.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ preamble$ empty$ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{#1}"
+ write$ newline$
+ "\csname url@samestyle\endcsname"
+ write$ newline$
+ "\providecommand{\newblock}{\relax}"
+ write$ newline$
+ "\providecommand{\bibinfo}[2]{#2}"
+ write$ newline$
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
+ write$ newline$
+ "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
+ write$ newline$
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
+ write$ newline$
+ "\expandafter\ifx\csname l@#1\endcsname\relax"
+ write$ newline$
+ "\typeout{** WARNING: IEEEtranSN.bst: No hyphenation pattern has been}%"
+ write$ newline$
+ "\typeout{** loaded for the language `#1'. Using the pattern for}%"
+ write$ newline$
+ "\typeout{** the default language instead.}%"
+ write$ newline$
+ "\else"
+ write$ newline$
+ "\language=\csname l@#1\endcsname"
+ write$ newline$
+ "\fi"
+ write$ newline$
+ "#2}}"
+ write$ newline$
+ "\providecommand{\BIBdecl}{\relax}"
+ write$ newline$
+ "\BIBdecl"
+ write$ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$ "\end{thebibliography}" write$ newline$ }
+
+FUNCTION {if.url.alt.interword.spacing}
+{ is.use.alt.interword.spacing
+ {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$}
+ { skip$ }
+ if$
+}
+
+FUNCTION {if.url.std.interword.spacing}
+{ is.use.alt.interword.spacing
+ {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$}
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%% FORMAT HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%%
+
+%% Lower Level Formats (used by higher level formats)
+
+FUNCTION {format.address.org.or.pub.date}
+{ 't :=
+ ""
+ year empty$
+ { "empty year in " cite$ * warning$ }
+ { skip$ }
+ if$
+ address empty$ t empty$ and
+ year empty$ and month empty$ and
+ { skip$ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ address "address" bibinfo.check *
+ t empty$
+ { skip$ }
+ { punct.period 'prev.status.punct :=
+ space.large 'prev.status.space :=
+ address empty$
+ { skip$ }
+ { ": " * }
+ if$
+ t *
+ }
+ if$
+ year empty$ month empty$ and
+ { skip$ }
+ { t empty$ address empty$ and
+ { skip$ }
+ { ", " * }
+ if$
+ month empty$
+ { year empty$
+ { skip$ }
+ { year "year" bibinfo.check * }
+ if$
+ }
+ { month "month" bibinfo.check *
+ year empty$
+ { skip$ }
+ { " " * year "year" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ this.to.prev.status
+ this.status.std
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ name.format.string
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ { nameptr num.names.shown.with.forced.et.al #1 + =
+ numnames max.num.names.before.forced.et.al >
+ is.forced.et.al and and
+ { "others" 't :=
+ #1 'namesleft :=
+ }
+ { skip$ }
+ if$
+ namesleft #1 >
+ { ", " * t do.name.latex.cmd * }
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ { " " * bbl.etal emphasize * }
+ { numnames #2 >
+ { "," * }
+ { skip$ }
+ if$
+ bbl.and
+ space.word * t do.name.latex.cmd *
+ }
+ if$
+ }
+ if$
+ }
+ { t do.name.latex.cmd }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ cap.status.std
+ } if$
+}
+
+
+
+
+%% Higher Level Formats
+
+%% addresses/locations
+
+FUNCTION {format.address}
+{ address duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% author/editor names
+
+FUNCTION {format.authors}{ author "author" format.names }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ { ", " *
+ get.bbl.editor
+ capitalize
+ *
+ }
+ if$
+}
+
+
+
+%% date
+
+FUNCTION {format.date}
+{
+ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "there's a month but no year in " cite$ * warning$ }
+ if$
+ *
+ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ swap$ 'skip$
+ {
+ swap$
+ " " * swap$
+ }
+ if$
+ *
+ }
+ if$
+}
+
+FUNCTION {format.date.electronic}
+{ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$
+ { pop$ }
+ { "there's a month but no year in " cite$ * warning$
+ pop$ ")" * "(" swap$ *
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+ }
+ { swap$
+ { swap$ pop$ ")" * "(" swap$ * }
+ { "(" swap$ * ", " * swap$ * ")" * }
+ if$
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% edition/title
+
+% Note: IEEE considers the edition to be closely associated with
+% the title of a book. So, in IEEEtran.bst the edition is normally handled
+% within the formatting of the title. The format.edition function is
+% retained here for possible future use.
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$ change.case$
+ "edition" bibinfo.check
+ "~" * bbl.edition *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of a conference proceedings.
+% Here we use the "intype" field to provide the user a way to
+% override the word "in" (e.g., with things like "presented at")
+% Use of intype stops the emphasis of the booktitle to indicate that
+% we no longer mean the written conference proceedings, but the
+% conference itself.
+FUNCTION {format.in.booktitle}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ intype missing$
+ { emphasize
+ bbl.in " " *
+ }
+ { intype " " * }
+ if$
+ swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of collection.
+% Here the "intype" field is not supported, but "edition" is.
+FUNCTION {format.in.booktitle.edition}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ "l" change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ bbl.in " " * swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { quote.close 'this.status.quote :=
+ is.last.char.not.punct
+ { punct.std 'this.status.punct := }
+ { punct.no 'this.status.punct := }
+ if$
+ select.language
+ "``" swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title.electronic}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$
+ { skip$ }
+ { select.language }
+ if$
+}
+
+FUNCTION {format.book.title.edition}
+{ title "title" bibinfo.check
+ duplicate$ empty$
+ { "empty title in " cite$ * warning$ }
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$
+ change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.book.title}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% journal
+
+FUNCTION {format.journal}
+{ journal duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% how published
+
+FUNCTION {format.howpublished}
+{ howpublished duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% institutions/organization/publishers/school
+
+FUNCTION {format.institution}
+{ institution duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.organization}
+{ organization duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.address.publisher.date}
+{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
+
+FUNCTION {format.address.publisher.date.nowarn}
+{ publisher "publisher" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.address.organization.date}
+{ organization "organization" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.school}
+{ school duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% volume/number/series/chapter/pages
+
+FUNCTION {format.volume}
+{ volume empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ bbl.volume
+ status.cap
+ { capitalize }
+ { skip$ }
+ if$
+ swap$ tie.or.space.prefix
+ "volume" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number}
+{ number empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ status.cap
+ { bbl.number capitalize }
+ { bbl.number }
+ if$
+ swap$ tie.or.space.prefix
+ "number" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number.if.use.for.article}
+{ is.use.number.for.article
+ { format.number }
+ { "" }
+ if$
+}
+
+% IEEE does not seem to tie the series so closely with the volume
+% and number as is done in other bibliography styles. Instead the
+% series is treated somewhat like an extension of the title.
+FUNCTION {format.series}
+{ series empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.series " " *
+ series "series" bibinfo.check *
+ cap.status.std
+ }
+ if$
+}
+
+
+FUNCTION {format.chapter}
+{ chapter empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+% The intended use of format.paper is for paper numbers of inproceedings.
+% The paper type can be overridden via the type field.
+% We allow the type to be displayed even if the paper number is absent
+% for things like "postdeadline paper"
+FUNCTION {format.paper}
+{ is.use.paper
+ { paper empty$
+ { type empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type "type" bibinfo.check
+ cap.status.std
+ }
+ if$
+ }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.paper }
+ { type "type" bibinfo.check }
+ if$
+ " " * paper
+ "paper" bibinfo.check
+ *
+ cap.status.std
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ duplicate$ is.multiple.pages
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% technical report number
+
+FUNCTION {format.tech.report.number}
+{ number "number" bibinfo.check
+ this.to.prev.status
+ this.status.std
+ cap.status.std
+ type duplicate$ empty$
+ { pop$
+ bbl.techrep
+ }
+ { skip$ }
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+
+
+
+%% note
+
+FUNCTION {format.note}
+{ note empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ punct.period 'this.status.punct :=
+ note #1 #1 substring$
+ duplicate$ "{" =
+ { skip$ }
+ { status.cap
+ { "u" }
+ { "l" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% patent
+
+FUNCTION {format.patent.date}
+{ this.to.prev.status
+ this.status.std
+ year empty$
+ { monthfiled duplicate$ empty$
+ { "monthfiled" bibinfo.check pop$ "" }
+ { "monthfiled" bibinfo.check }
+ if$
+ dayfiled duplicate$ empty$
+ { "dayfiled" bibinfo.check pop$ "" * }
+ { "dayfiled" bibinfo.check
+ monthfiled empty$
+ { "dayfiled without a monthfiled in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ yearfiled empty$
+ { "no year or yearfiled in " cite$ * warning$ }
+ { yearfiled "yearfiled" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ }
+ { month duplicate$ empty$
+ { "month" bibinfo.check pop$ "" }
+ { "month" bibinfo.check }
+ if$
+ day duplicate$ empty$
+ { "day" bibinfo.check pop$ "" * }
+ { "day" bibinfo.check
+ month empty$
+ { "day without a month in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ year "year" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.patent.nationality.type.number}
+{ this.to.prev.status
+ this.status.std
+ nationality duplicate$ empty$
+ { "nationality" bibinfo.warn pop$ "" }
+ { "nationality" bibinfo.check
+ duplicate$ "l" change.case$ "united states" =
+ { pop$ bbl.patentUS }
+ { skip$ }
+ if$
+ " " *
+ }
+ if$
+ type empty$
+ { bbl.patent "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.warn pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+
+
+%% standard
+
+FUNCTION {format.organization.institution.standard.type.number}
+{ this.to.prev.status
+ this.status.std
+ organization duplicate$ empty$
+ { pop$
+ institution duplicate$ empty$
+ { "institution" bibinfo.warn }
+ { "institution" bibinfo.warn " " * }
+ if$
+ }
+ { "organization" bibinfo.warn " " * }
+ if$
+ type empty$
+ { bbl.standard "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.check pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.revision}
+{ revision empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.revision
+ revision tie.or.space.prefix
+ "revision" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+%% thesis
+
+FUNCTION {format.master.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.mthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+FUNCTION {format.phd.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.phdthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+
+
+%% URL
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ cap.yes 'status.cap :=
+ name.url.prefix " " *
+ "\url{" * url * "}" *
+ punct.no 'this.status.punct :=
+ punct.period 'prev.status.punct :=
+ space.normal 'this.status.space :=
+ space.normal 'prev.status.space :=
+ quote.no 'this.status.quote :=
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%
+%% ENTRY HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%
+
+
+% Note: In many journals, IEEE (or the authors) tend not to show the number
+% for articles, so the display of the number is controlled here by the
+% switch "is.use.number.for.article"
+FUNCTION {article}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.journal "journal" bibinfo.check "journal" output.warn
+ format.volume output
+ format.number.if.use.for.article output
+ format.pages output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {book}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ author empty$
+ { skip$ }
+ { format.editors output }
+ if$
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {booklet}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {electronic}
+{ std.status.using.period
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.date.electronic output
+ format.article.title.electronic output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inbook}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {incollection}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle.edition "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.address.publisher.date.nowarn output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inproceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.paper output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {manual}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title.edition "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {mastersthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.master.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {misc}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.pages output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {patent}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.patent.nationality.type.number output
+ format.patent.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {periodical}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ format.organization "organization" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {phdthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.phd.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {proceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {standard}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization.institution.standard.type.number output
+ format.revision output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {techreport}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.institution "institution" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.tech.report.number output.nonnull
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {unpublished}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.date output
+ format.note "note" output.warn
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+
+% The special entry type which provides the user interface to the
+% BST controls
+FUNCTION {IEEEtranBSTCTL}
+{ is.print.banners.to.terminal
+ { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
+ top$
+ }
+ { skip$ }
+ if$
+ CTLuse_article_number
+ empty$
+ { skip$ }
+ { CTLuse_article_number
+ yes.no.to.int
+ 'is.use.number.for.article :=
+ }
+ if$
+ CTLuse_paper
+ empty$
+ { skip$ }
+ { CTLuse_paper
+ yes.no.to.int
+ 'is.use.paper :=
+ }
+ if$
+ CTLuse_forced_etal
+ empty$
+ { skip$ }
+ { CTLuse_forced_etal
+ yes.no.to.int
+ 'is.forced.et.al :=
+ }
+ if$
+ CTLmax_names_forced_etal
+ empty$
+ { skip$ }
+ { CTLmax_names_forced_etal
+ string.to.integer
+ 'max.num.names.before.forced.et.al :=
+ }
+ if$
+ CTLnames_show_etal
+ empty$
+ { skip$ }
+ { CTLnames_show_etal
+ string.to.integer
+ 'num.names.shown.with.forced.et.al :=
+ }
+ if$
+ CTLuse_alt_spacing
+ empty$
+ { skip$ }
+ { CTLuse_alt_spacing
+ yes.no.to.int
+ 'is.use.alt.interword.spacing :=
+ }
+ if$
+ CTLalt_stretch_factor
+ empty$
+ { skip$ }
+ { CTLalt_stretch_factor
+ 'ALTinterwordstretchfactor :=
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ }
+ if$
+ CTLdash_repeated_names
+ empty$
+ { skip$ }
+ { CTLdash_repeated_names
+ yes.no.to.int
+ 'is.dash.repeated.names :=
+ }
+ if$
+ CTLname_format_string
+ empty$
+ { skip$ }
+ { CTLname_format_string
+ 'name.format.string :=
+ }
+ if$
+ CTLname_latex_cmd
+ empty$
+ { skip$ }
+ { CTLname_latex_cmd
+ 'name.latex.cmd :=
+ }
+ if$
+ CTLname_url_prefix
+ missing$
+ { skip$ }
+ { CTLname_url_prefix
+ 'name.url.prefix :=
+ }
+ if$
+
+
+ num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
+ { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
+ max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
+ }
+ { skip$ }
+ if$
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+%% ENTRY ALIASES %%
+%%%%%%%%%%%%%%%%%%%
+FUNCTION {conference}{inproceedings}
+FUNCTION {online}{electronic}
+FUNCTION {internet}{electronic}
+FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
+FUNCTION {default.type}{misc}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% MAIN PROGRAM %%
+%%%%%%%%%%%%%%%%%%
+
+READ
+
+EXECUTE {initialize.controls}
+EXECUTE {initialize.status.constants}
+EXECUTE {banner.message}
+
+
+
+% BEGIN sort code based on plainnat.bst
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { numnames #2 > nameptr #2 = and
+ { "zz" *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string * " " *
+ }
+ { skip$ }
+ if$
+ t sortify *
+ }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.institution.sort}
+{ author empty$
+ { organization empty$
+ { institution empty$
+ { key empty$
+ { "to sort, need author, organization, institution or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 institution chop.word sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+
+
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.institution.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { institution empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 institution chop.word #3 text.prefix$ }
+ if$
+ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.key.label }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.key.organization.label }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.key.organization.label }
+ { type$ "standard" =
+ { author.key.organization.institution.label }
+ { author.key.label }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ 'short.list :=
+ "("
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ duplicate$
+ empty$
+ short.list key empty.field.to.null.string = or
+ { pop$ "" }
+ { skip$ }
+ if$
+ *
+ 'label :=
+}
+
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ duplicate$
+ }
+ { calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.sort }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.organization.sort }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.organization.sort }
+ { type$ "standard" =
+ { author.organization.institution.sort }
+ { author.sort }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ cite$
+ *
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { next.extra "b" =
+ { "a" 'extra.label := }
+ { skip$ }
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ { skip$ }
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+ }
+ if$
+}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+% END sort code based on plainnat.bst
+
+
+
+
+ITERATE {presort}
+
+SORT
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
+EXECUTE{completed.message}
+
+
+%% That's all folks, mds.