From c4a18cc35b13311ec9424f499268be12a8b09eb6 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 12 Jan 2007 01:27:18 +0000 Subject: IEEEtrans 1.7 git-svn-id: svn://tug.org/texlive/trunk@3354 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/bibtex/bib/IEEEtran/IEEEabrv.bib | 484 ++-- .../texmf-dist/bibtex/bib/IEEEtran/IEEEbcpat.bib | 77 - .../texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib | 1031 +++---- Master/texmf-dist/bibtex/bib/IEEEtran/IEEEfull.bib | 292 +- Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst | 178 +- .../texmf-dist/bibtex/bst/IEEEtran/IEEEtranN.bst | 2709 +++++++++++++++++++ .../texmf-dist/bibtex/bst/IEEEtran/IEEEtranS.bst | 189 +- .../texmf-dist/bibtex/bst/IEEEtran/IEEEtranSA.bst | 2778 +++++++++++++++++++ .../texmf-dist/bibtex/bst/IEEEtran/IEEEtranSN.bst | 2850 ++++++++++++++++++++ 9 files changed, 9575 insertions(+), 1013 deletions(-) delete mode 100644 Master/texmf-dist/bibtex/bib/IEEEtran/IEEEbcpat.bib create mode 100644 Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranN.bst create mode 100644 Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSA.bst create mode 100644 Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSN.bst (limited to 'Master/texmf-dist/bibtex') 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. -- cgit v1.2.3