From 92291f51b83a8f778bc5e630ff7b521a3329b6c5 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 22 Jun 2021 17:38:12 +0000 Subject: IEEEtran -> ieeetrans git-svn-id: svn://tug.org/texlive/trunk@59672 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/bibtex/bib/IEEEtran/IEEEabrv.bib | 489 ---- .../texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib | 1203 -------- Master/texmf-dist/bibtex/bib/IEEEtran/IEEEfull.bib | 486 ---- Master/texmf-dist/bibtex/bib/ieeetran/IEEEabrv.bib | 489 ++++ .../texmf-dist/bibtex/bib/ieeetran/IEEEexample.bib | 1203 ++++++++ Master/texmf-dist/bibtex/bib/ieeetran/IEEEfull.bib | 486 ++++ Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst | 2409 ---------------- .../texmf-dist/bibtex/bst/IEEEtran/IEEEtranN.bst | 2735 ------------------- .../texmf-dist/bibtex/bst/IEEEtran/IEEEtranS.bst | 2607 ------------------ .../texmf-dist/bibtex/bst/IEEEtran/IEEEtranSA.bst | 2806 ------------------- .../texmf-dist/bibtex/bst/IEEEtran/IEEEtranSN.bst | 2878 -------------------- Master/texmf-dist/bibtex/bst/ieeetran/IEEEtran.bst | 2409 ++++++++++++++++ .../texmf-dist/bibtex/bst/ieeetran/IEEEtranN.bst | 2735 +++++++++++++++++++ .../texmf-dist/bibtex/bst/ieeetran/IEEEtranS.bst | 2607 ++++++++++++++++++ .../texmf-dist/bibtex/bst/ieeetran/IEEEtranSA.bst | 2806 +++++++++++++++++++ .../texmf-dist/bibtex/bst/ieeetran/IEEEtranSN.bst | 2878 ++++++++++++++++++++ 16 files changed, 15613 insertions(+), 15613 deletions(-) delete mode 100644 Master/texmf-dist/bibtex/bib/IEEEtran/IEEEabrv.bib delete mode 100644 Master/texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib delete mode 100644 Master/texmf-dist/bibtex/bib/IEEEtran/IEEEfull.bib create mode 100644 Master/texmf-dist/bibtex/bib/ieeetran/IEEEabrv.bib create mode 100644 Master/texmf-dist/bibtex/bib/ieeetran/IEEEexample.bib create mode 100644 Master/texmf-dist/bibtex/bib/ieeetran/IEEEfull.bib delete mode 100644 Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst delete mode 100644 Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranN.bst delete mode 100644 Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranS.bst delete mode 100644 Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSA.bst delete mode 100644 Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSN.bst create mode 100644 Master/texmf-dist/bibtex/bst/ieeetran/IEEEtran.bst create mode 100644 Master/texmf-dist/bibtex/bst/ieeetran/IEEEtranN.bst create mode 100644 Master/texmf-dist/bibtex/bst/ieeetran/IEEEtranS.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 deleted file mode 100644 index bcaccfc145f..00000000000 --- a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEabrv.bib +++ /dev/null @@ -1,489 +0,0 @@ - -IEEEabrv.bib -V1.14 (2015/08/26) -Copyright (c) 2002-2015 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/pkg/ieeetran -and/or -http://www.ieee.org/ - -Special thanks to Laura Hyslop, Ken Rawson, Kevin Lisankie and -Mona Mittra of the IEEE for their help in obtaining the information needed -to compile this file. Also, Volker Kuhlmann, Moritz Borgmann, -Yannick Berker, Nicolás Barabino, Chuanren Wu and Santiago Cogollos Borras -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 the 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. ** -************************************************************************* - - -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." - - -The 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. Older, out-of-print IEEE titles are included (but not including titles - dating prior to the IEEE's formation from the IRE and AIEE in 1963). - - 4. Abbreviations comply with the official specifications of the IEEE. - - - - - - -IEEE Journals - - -aerospace and military -@STRING{IEEE_J_ANNE = "{IEEE} Trans. Aeronaut. Navig. Electron."} -@STRING{IEEE_J_AES = "{IEEE} Trans. Aerosp. Electron. Syst."} -@STRING{IEEE_J_ANE = "{IEEE} Trans. Aerosp. Navig. Electron."} -@STRING{IEEE_J_AS = "{IEEE} Trans. Aerosp."} -@STRING{IEEE_J_AIRE = "{IEEE} Trans. Airborne Electron."} -@STRING{IEEE_J_MIL = "{IEEE} Trans. Mil. Electron."} - - - -autos, transportation and vehicles (non-aerospace) -@STRING{IEEE_J_ITS = "{IEEE} Trans. Intell. Transp. Syst."} -@STRING{IEEE_J_IV = "{IEEE} Trans. Intell. Veh."} -@STRING{IEEE_J_TTE = "{IEEE} Trans. Transport. Electrific."} -@STRING{IEEE_J_VC = "{IEEE} Trans. Veh. Commun."} -@STRING{IEEE_J_VT = "{IEEE} Trans. Veh. Technol."} - - - -circuits, signals, systems, audio and controls -@STRING{IEEE_J_STSP = "{IEEE} J. Sel. Topics Signal Process."} -@STRING{IEEE_J_SPL = "{IEEE} Signal Process. Lett."} -@STRING{IEEE_J_SYST = "{IEEE} Syst. J."} -@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."} -in 2014 ASL became ASLP -@STRING{IEEE_J_ASLP = "{IEEE/ACM} Trans. Audio, Speech, Language Process."} -@STRING{IEEE_J_ASL = "{IEEE} Audio, Speech, Language Process."} -@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. Control Syst. Technol."} -@STRING{IEEE_J_ETCAS = "{IEEE} Trans. Emerg. Sel. Topics Circuits Syst."} -@STRING{IEEE_J_SP = "{IEEE} Trans. Signal Process."} -@STRING{IEEE_J_SU = "{IEEE} Trans. Sonics Ultrason."} -@STRING{IEEE_J_SAP = "{IEEE} Trans. Speech Audio Process."} -@STRING{IEEE_J_UE = "{IEEE} Trans. Ultrason. Eng."} -@STRING{IEEE_J_UFFC = "{IEEE} Trans. Ultrason., Ferroelectr., Freq. Control"} - - - -communications -@STRING{IEEE_J_COML = "{IEEE} Commun. Lett."} -@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."} -@STRING{IEEE_J_WCOML = "{IEEE} Wireless Commun. Lett."} - - - -components, packaging and manufacturing -@STRING{IEEE_J_ADVP = "{IEEE} Trans. Adv. Packag."} -@STRING{IEEE_J_CHMT = "{IEEE} Trans. Compon., Hybrids, Manuf. Technol."} -in 2011 CAPT became CPMT -@STRING{IEEE_J_CPMT = "{IEEE} Trans. Compon. Packag. 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_CAPTS = "{IEEE} Trans. Compon. Packag. Technol."} -@STRING{IEEE_J_CAPT = "{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. Comput. Aided Design"} -@STRING{IEEE_J_CAD = "{IEEE} Trans. Comput.-Aided Design Integr. Circuits Syst."} - - - -coding, data, information, knowledge -@STRING{IEEE_J_BD = "{IEEE} Trans. Big Data"} -@STRING{IEEE_J_IFS = "{IEEE} Trans. Inf. Forensics Security"} -@STRING{IEEE_J_IT = "{IEEE} Trans. Inf. Theory"} -@STRING{IEEE_J_KDE = "{IEEE} Trans. Knowl. Data Eng."} - - - -computers, computation, networking and software -@STRING{IEEE_J_CAL = "{IEEE} Comput. Archit. Lett."} -@STRING{IEEE_J_ES = "{IEEE} Embedded Syst. Lett."} -@STRING{IEEE_J_IOT = "{IEEE} Internet Things J."} -@STRING{IEEE_J_XCDC = "{IEEE} J. Explor. Solid-State Computat. Devices Circuits"} -@STRING{IEEE_J_MMCT = "{IEEE} J. Multiscale and Multiphys. Comput. Techn."} -@STRING{IEEE_J_SUSC = "{IEEE} Sustain. Comput."} -@STRING{IEEE_J_CC = "{IEEE} Trans. on Cloud Comput."} -@STRING{IEEE_J_CSS = "{IEEE} Trans. Comput. Social Syst."} -@STRING{IEEE_J_C = "{IEEE} Trans. Comput."} -@STRING{IEEE_J_CNS = "{IEEE} Trans. Control Netw. Syst."} -@STRING{IEEE_J_DSC = "{IEEE} Trans. Depend. Sec. Comput."} -@STRING{IEEE_J_ECOMP = "{IEEE} Trans. Electron. Comput."} -@STRING{IEEE_J_ETC = "{IEEE} Trans. Emerg. Topics Comput."} -@STRING{IEEE_J_EVC = "{IEEE} Trans. Evol. Comput."} -@STRING{IEEE_J_FUZZ = "{IEEE} Trans. Fuzzy Syst."} -@STRING{IEEE_J_MC = "{IEEE} Trans. Mobile Comput."} -@STRING{IEEE_J_MSCS = "{IEEE} Trans. Multi-Scale Comput. Syst."} -@STRING{IEEE_J_NET = "{IEEE/ACM} Trans. Netw."} -@STRING{IEEE_J_NSE = "{IEEE} Trans. Netw. Sci. Eng."} -@STRING{IEEE_J_NSM = "{IEEE} Trans. Netw. Service Manag."} -@STRING{IEEE_J_NN = "{IEEE} Trans. Neural Netw."} -in 2012 NN became NNLS -@STRING{IEEE_J_NNLS = "{IEEE} Trans. Neural Netw. Learn. Syst."} -@STRING{IEEE_J_PDS = "{IEEE} Trans. Parallel Distrib. Syst."} -@STRING{IEEE_J_SC = "{IEEE} Trans. Serv. Comput."} -@STRING{IEEE_J_SIPN = "{IEEE} Trans. Signal Inf. Process. Netw."} -@STRING{IEEE_J_SE = "{IEEE} Trans. Softw. Eng."} - - - -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. Vis. Comput. Graphics"} - - - -cybernetics, ergonomics, robots, man-machine, artificial intelligence and automation -@STRING{IEEE_J_JAS = "{IEEE/CAA} J. Autom. Sinica"} -@STRING{IEEE_J_JRA = "{IEEE} J. Robot. Autom."} -@STRING{IEEE_J_AFFC = "{IEEE} Trans. Affect. Comput."} -@STRING{IEEE_J_ASE = "{IEEE} Trans. Autom. Sci. Eng."} -@STRING{IEEE_J_AMD = "{IEEE} Trans. Auton. Mental Develop."} -@STRING{IEEE_J_CCN = "{IEEE} Trans. on Cogn. Commun. Netw."} -in 2015 AMD became CDS -@STRING{IEEE_J_CDS = "{IEEE} Trans. Cogn. Develop. Syst."} -@STRING{IEEE_J_CIAIG = "{IEEE} Trans. Comput. Intell. {AI} in Games"} -in 2013 SMCB became CYB -@STRING{IEEE_J_CYB = "{IEEE} Trans. Cybern."} -@STRING{IEEE_J_H = "{IEEE} Trans. Haptics"} -@STRING{IEEE_J_HFE = "{IEEE} Trans. Hum. Factors Electron."} -in 2013 SMCC became HMS -@STRING{IEEE_J_HMS = "{IEEE} Trans. Human-Mach. Syst."} -@STRING{IEEE_J_MMS = "{IEEE} Trans. Man-Mach. Syst."} -@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_RAL = "{IEEE} Robot. Autom. Lett."} -@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}"} -in 2012 SMCA became SMCS -@STRING{IEEE_J_SMCS = "{IEEE} Trans. Syst., Man, Cybern., Syst."} -@STRING{IEEE_J_SSC = "{IEEE} Trans. Syst. Sci. Cybern."} - - - -earth, wind, fire and water -@STRING{IEEE_J_GRSL = "{IEEE} Geosci. Remote Sens. Lett."} -@STRING{IEEE_J_GE = "{IEEE} Trans. Geosci. Electron."} -@STRING{IEEE_J_GRS = "{IEEE} Trans. Geosci. Remote Sens."} -@STRING{IEEE_J_OE = "{IEEE} J. Ocean. Eng."} -@STRING{IEEE_J_STARS = "{IEEE} J. Sel. Topics Appl. Earth Observ. Remote Sens."} - - - -education, engineering, history, IEEE, professional -@STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."} -@STRING{IEEE_J_PROC = "Proc. {IEEE}"} -@STRING{IEEE_J_RITA = "{IEEE} Revista Iberoamericana de Technolog{\'{i}}as del Aprendizaje"} -@STRING{IEEE_J_EDU = "{IEEE} Trans. Educ."} -@STRING{IEEE_J_EM = "{IEEE} Trans. Eng. Manag."} -@STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"} -@STRING{IEEE_J_LT = "{IEEE} Trans. Learn. Technol."} -@STRING{IEEE_J_PC = "{IEEE} Trans. Prof. Commun."} - - - -electromagnetics, antennas, EMI, magnetics and microwave -@STRING{IEEE_J_AWPL = "{IEEE} Antennas Wireless Propag. Lett."} -@STRING{IEEE_J_MAGL = "{IEEE} Magn. Lett."} -@STRING{IEEE_J_MGWL = "{IEEE} Microw. Guided Wave Lett."} -@STRING{IEEE_J_MWCL = "{IEEE} Microw. Wireless Compon. Lett."} -@STRING{IEEE_J_RFIC = "{IEEE} {RFIC} J."} -@STRING{IEEE_J_RFID = "{IEEE} {RFID} J."} -@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. Microw. Theory Techn."} -@STRING{IEEE_J_RFI = "{IEEE} Trans. Radio Freq. Interference"} -@STRING{IEEE_J_TTHZ = "{IEEE} Trans. {THz} Sci. Technol."} -@STRING{IEEE_J_TJMJ = "{IEEE} Transl. J. Magn. Jpn."} - - - -energy, power and conversion -@STRING{IEEE_J_PHOT = "{IEEE} J. Photovolt."} -@STRING{IEEE_J_PEL = "{IEEE} Power Electron. Lett."} -@STRING{IEEE_J_PETS = "{IEEE} Power Energy Technol. Syst. J."} -@STRING{IEEE_J_ESTPE = "{IEEE} Trans. Emerg. Sel. Topics Power Electron."} -@STRING{IEEE_J_EC = "{IEEE} Trans. Energy Convers."} -@STRING{IEEE_J_PWRAS = "{IEEE} Trans. Power App. Syst."} -@STRING{IEEE_J_PWRD = "{IEEE} Trans. Power Del."} -@STRING{IEEE_J_PWRE = "{IEEE} Trans. Power Electron."} -@STRING{IEEE_J_PWRS = "{IEEE} Trans. Power Syst."} -@STRING{IEEE_J_SG = "{IEEE} Trans. Smart Grid"} -@STRING{IEEE_J_STE = "{IEEE} Trans. Sustain. Energy"} - - - -industrial, commercial and consumer -@STRING{IEEE_J_PSE = "{IEEE} J. Product Safety Eng."} -@STRING{IEEE_J_APPIND = "{IEEE} Trans. Appl. Ind."} -@STRING{IEEE_J_BC = "{IEEE} Trans. Broadcast."} -@STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"} -@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. Appl."} -@STRING{IEEE_J_IGA = "{IEEE} Trans. Ind. Gen. Appl."} -@STRING{IEEE_J_IINF = "{IEEE} Trans. Ind. Informat."} - - - -instrumentation and measurement -@STRING{IEEE_J_IM = "{IEEE} Trans. Instrum. Meas."} - - - -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_MEMS = "J. Microelectromech. Syst."} -in 2014 MEMS became MEMSI -@STRING{IEEE_J_MEMSI = "J. Microelectromech. Syst."} -@STRING{IEEE_J_MECH = "{IEEE/ASME} Trans. Mechatronics"} - - - -medical and biological -@STRING{IEEE_J_BHI = "{IEEE} J. Biomed. Health Inform."} -@STRING{IEEE_J_TEHM = "{IEEE} J. Transl. Eng. Health Med."} -@STRING{IEEE_J_LS = "{IEEE} Life Sci. Lett."} -@STRING{IEEE_J_RBME = "{IEEE} Rev. Biomed. Eng."} -@STRING{IEEE_J_BCAS = "{IEEE} Trans. Biomed. Circuits Syst."} -@STRING{IEEE_J_BMELC = "{IEEE} Trans. Bio-Med. Electron."} -B-ME later dropped the hyphen and became the BME -@STRING{IEEE_J_BME = "{IEEE} Trans. Biomed. Eng."} -@STRING{IEEE_J_B-ME = "{IEEE} Trans. Bio-Med. Eng."} -@STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biol. 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."} -@STRING{IEEE_J_MBSC = "{IEEE} Trans. Mol. Biol. Multi-Scale Commun."} -@STRING{IEEE_J_NB = "{IEEE} Trans. Nanobiosci."} -@STRING{IEEE_J_NSRE = "{IEEE} Trans. Neural Syst. Rehabil. Eng."} -@STRING{IEEE_J_RE = "{IEEE} Trans. Rehabil. Eng."} - - - -optics, lightwave and photonics -@STRING{IEEE_J_JLT = "J. Lightw. Technol."} -@STRING{IEEE_J_OCN = "{IEEE} J. Opt. Commun. Netw."} -@STRING{IEEE_J_PJ = "{IEEE} Photon. J."} -@STRING{IEEE_J_PTL = "{IEEE} Photon. Technol. Lett."} - - - -physics, electrons, nanotechnology, nuclear and quantum electronics -@STRING{IEEE_J_EDL = "{IEEE} Electron Device Lett."} -@STRING{IEEE_J_EDS = "{IEEE} J. Electron Devices Soc."} -@STRING{IEEE_J_JQE = "{IEEE} J. Quantum Electron."} -@STRING{IEEE_J_JSTQE = "{IEEE} J. Sel. Topics Quantum Electron."} -@STRING{IEEE_J_ENANO = "{IEEE} Nanotechnol. Express"} -@STRING{IEEE_J_ED = "{IEEE} Trans. Electron Devices"} -@STRING{IEEE_J_NANO = "{IEEE} Trans. Nanotechnol."} -@STRING{IEEE_J_NS = "{IEEE} Trans. Nucl. Sci."} -@STRING{IEEE_J_PS = "{IEEE} Trans. Plasma Sci."} - - - -reliability -@STRING{IEEE_J_DMR = "{IEEE} Trans. Device Mater. Rel."} -@STRING{IEEE_J_R = "{IEEE} Trans. Rel."} - - - -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. Supercond."} -@STRING{IEEE_J_SM = "{IEEE} Trans. Semicond. Manuf."} - - - -sensors -@STRING{IEEE_J_SENSOR = "{IEEE} Sensors J."} - - - -VLSI -@STRING{IEEE_J_VLSI = "{IEEE} Trans. {VLSI} Syst."} - - - - - - -IEEE Magazines and Online Publications - - -@STRING{IEEE_O_ACC = "{IEEE} Access"} -@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_CHINAC = "China Commun."} -@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."} -@STRING{IEEE_O_CSTO = "{IEEE} Commun. Surveys Tuts."} -@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 = "Computer"} -@STRING{IEEE_M_CAP = "{IEEE} Comput. Appl. Power"} -@STRING{IEEE_M_CGA = "{IEEE} Comput. Graph. Appl."} -@STRING{IEEE_M_CONC = "{IEEE} Concurrency"} -@STRING{IEEE_M_CS = "{IEEE} Control Syst. Mag."} -in 2012 DTC became DT -@STRING{IEEE_M_DT = "{IEEE} Des. Test"} -@STRING{IEEE_M_DTC = "{IEEE} Des. Test. Comput."} -@STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"} -@STRING{IEEE_M_EI = "{IEEE} Electr. Insul. Mag."} -@STRING{IEEE_M_ETF = "{IEEE} Electrific. Mag."} -@STRING{IEEE_M_EMC = "{IEEE} Electromagn. Compat."} -@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnol. Rev."} -@STRING{IEEE_M_EMR = "{IEEE} Eng. Manag. Rev."} -@STRING{IEEE_M_EMB = "{IEEE} Eng. Med. Biol. Mag."} -@STRING{IEEE_M_EXP = "{IEEE} Expert"} -@STRING{IEEE_M_GRS = "{IEEE} Geosci. Remote Sens. Mag."} -@STRING{IEEE_M_IA = "{IEEE} Ind. Appl. Mag."} -@STRING{IEEE_M_IE = "{IEEE} Ind. Electron. Mag."} -@STRING{IEEE_M_IM = "{IEEE} Instrum. Meas. Mag."} -@STRING{IEEE_M_IS = "{IEEE} Intell. Syst."} -@STRING{IEEE_M_ITS = "{IEEE} Intell. Transp. Syst. Mag."} -@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} Microw. Mag."} -@STRING{IEEE_M_MM = "{IEEE} Multimedia"} -@STRING{IEEE_M_NANO = "{IEEE} Nanotechnol. Mag."} -@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_PVC = "{IEEE} Pervasive Comput."} -@STRING{IEEE_M_POT = "{IEEE} Potentials"} -@STRING{IEEE_M_PEL = "{IEEE} Power Electron. Mag."} -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_PULSE = "{IEEE} Pulse"} -@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_SSC = "{IEEE} Solid-State Circuits Mag."} -@STRING{IEEE_M_SPECT = "{IEEE} Spectr."} -@STRING{IEEE_M_SMC = "{IEEE} Syst., Man, Cybern. Mag."} -@STRING{IEEE_M_TS = "{IEEE} Technol. Soc. Mag."} -@STRING{IEEE_M_VT = "{IEEE} Veh. Technol. Mag."} -@STRING{IEEE_M_WC = "{IEEE} Wireless Commun."} -@STRING{IEEE_M_TODAY = "Today's Engineer"} - - - - - --- -EOF diff --git a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib b/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib deleted file mode 100644 index 8dbc1075adf..00000000000 --- a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEexample.bib +++ /dev/null @@ -1,1203 +0,0 @@ - -IEEEexample.bib -V1.14 (2015/08/26) -Copyright (c) 2002-2015 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/pkg/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 the 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. ** -************************************************************************* - - -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 -IEEEtran homepage -@electronic{IEEEhowto:IEEEtranpage, - author = "Michael Shell", - title = "{IEEE}tran Homepage", - url = "http://www.michaelshell.org/tex/ieeetran/", - year = "2015" -} - - -the distribution site for IEEEtran.bst -@electronic{IEEEexample:shellCTANpage, - author = "Michael Shell", - title = "{IEEE}tran Webpage on {CTAN}", - url = "http://www.ctan.org/pkg/ieeetran", - year = "2015" -} - - -the IEEE website -sort key is needed for sorting styles -@electronic{IEEEexample:IEEEwebsite, - title = "The {IEEE} Website", - url = "http://www.ieee.org/", - year = "2015", - 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. -@electronic{IEEEexample:bibtexuser, - author = "Oren Patashnik", - title = "{{\BibTeX}}ing", - howpublished = "{btxdoc.pdf}", - url = "http://www.ctan.org/pkg/bibtex", - month = nov, - year = "2010" -} - - -The BibTeX style designer's guide. -@electronic{IEEEexample:bibtexdesign, - author = "Oren Patashnik", - title = "Designing {{\BibTeX}} Styles", - howpublished = "{btxhak.pdf}", - url = "http://www.ctan.org/pkg/bibtex", - month = nov, - year = "2010" -} - - -A comprehensive BibTeX tutorial. -@electronic{IEEEexample:tamethebeast, - author = "Nicolas Markey", - title = "Tame the BeaST --- The B to X of {{\BibTeX}}", - url = "http://www.ctan.org/pkg/tamethebeast", - month = oct, - year = "2009" -} - - -The BibTeX Tips and FAQ guide. -@electronic{IEEEexample:bibtexFAQ, - author = "David Hoadley and Michael Shell", - title = "{{\BibTeX}} Tips and {FAQ}", - howpublished = "{btxFAQ.pdf}", - url = "http://mirror.ctan.org/biblio/bibtex/contrib/doc/btxFAQ.pdf", - month = jan, - year = "2007" -} - - -The TeX FAQ -@electronic{IEEEexample:texfaq, - author = "Robin Fairbairns", - title = "The {{\TeX}} {FAQ}", - url = "http://www.tex.ac.uk/", - month = jun, - year = "2014" -} - - -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.ws/kijoo2000/", - month = nov, - year = "2005" -} - - -TeX User Group Bibliography Archive -@electronic{IEEEexample:beebe_archive, - author = "Nelson H. F. Beebe", - title = "{{\TeX}} User Group Bibliography Archive", - url = "http://www.math.utah.edu/pub/tex/bib/index-table.html", - month = dec, - year = "2010" -} - - -@electronic{IEEEexample:natbib, - author = "Patrick W. Daly and Arthur Ogawa", - title = "The natbib package", - url = "http://www.ctan.org/pkg/natbib", - month = sep, - year = "2010" -} - - -@electronic{IEEEexample:urlsty, - author = "Donald Arseneau", - title = "The url package", - url = "http://www.ctan.org/pkg/url", - month = dec, - year = "2013" -} - - -@electronic{IEEEexample:hyperref, - author = "Sebastian Rahtz and Heiko Oberdiek", - title = "The hyperref package", - url = "http://www.ctan.org/pkg/hyperref", - month = nov, - year = "2012" -} - - -@electronic{IEEEexample:breakurl, - author = "Vilar da Camara Neto", - title = "The breakurl package", - url = "http://www.ctan.org/pkg/breakurl", - month = apr, - year = "2013", -} - - -@electronic{IEEEexample:babel, - author = "Johannes L. Braams and Javier Bezos", - title = "The {Babel} package", - url = "http://www.ctan.org/pkg/babel", - month = sep, - year = "2014" -} - - -@electronic{IEEEexample:multibib, - author = "Thorsten Hansen", - title = "The multibib package", - url = "http://www.ctan.org/pkg/multibib", - month = dec, - year = "2008" -} - - -@electronic{IEEEexample:biblatex, - author = "Philipp Lehman and Philip Kime", - title = "The biblatex package", - url = "http://www.ctan.org/pkg/biblatex", - month = apr, - year = "2015" -} - - - - -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. -@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 - Poly-{Si} {TFT}", - journal = IEEE_J_EDL, - volume = "20", - 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. -@article{IEEEexample:articleetal, - author = "F. Delorme and others", - title = "Butt-jointed {DBR} Laser With 15 {nm} Tunability Grown - in Three {MOVPE} Steps", - journal = "Electron. Lett.", - volume = "31", - 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. -@inproceedings{IEEEexample:conf_typical, - author = "R. K. Gupta and S. D. Senturia", - title = "Pull-in Time Dynamics as a Measure of Absolute Pressure", - booktitle = "Proc. {IEEE} International Workshop on - Microelectromechanical Systems ({MEMS}'97)", - address = "Nagoya, Japan", - month = jan, - year = "1997", - pages = "290-294" -} - - -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 - -journal article with large page numbers, the 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 the 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", - title = "Midgap Traps Related to Compensation Processes in - {CdTe} Alloys", - journal = "Phys. Rev. B.", - volume = "56", - 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. -@article{IEEEexample:articledualmonths, - author = "Y. Okada and K. Dejima and T. Ohishi", - title = "Analysis and Comparison of {PM} Synchronous Motor and - Induction Motor Type Magnetic Bearings", - journal = IEEE_J_IA, - volume = "31", - 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. -@misc{IEEEexample:TBPmisc, - author = "M. Coates and A. Hero and R. Nowak and B. Yu", - title = "Internet Tomography", - howpublished = IEEE_M_SP, - 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. -@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{IEEEexample:bookwitheditor, - editor = "J. C. Candy and G. C. Temes", - title = "Oversampling Delta-Sigma Data Converters Theory, - Design and Simulation", - 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 the 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.", - title = "Laser Assisted Microtechnology", - edition = "Second", - 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{IEEEexample:bookwithseriesvolume, - editor = "J. Breckling", - title = "The Analysis of Directional Time Series: Applications to - Wind Speed and Direction", - series = "Lecture Notes in Statistics", - publisher = "Springer", - 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{IEEEexample:inbook, - author = "H. E. Rose", - title = "A Course in Number Theory", - publisher = "Oxford Univ. Press", - 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{IEEEexample:inbookpagesnote, - author = "B. K. Bul", - title = "Theory Principles and Design of Magnetic Circuits", - publisher = "Energia Press", - address = "Moscow", - 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{IEEEexample:incollection, - author = "W. V. Sorin", - editor = "D. Derickson", - title = "Optical Reflectometry for Component Characterization", - booktitle = "Fiber Optic Test and Measurement", - 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{IEEEexample:incollectionwithseries, - author = "J. B. Anderson and K. Tepe", - title = "Properties of the Tailbiting {BCJR} Decoder", - booktitle = "Codes, Systems and Graphical Models", - series = "{IMA} Volumes in Mathematics and Its Applications", - publisher = "Springer-Verlag", - 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{IEEEexample:incollection_chpp, - author = "P. Hedelin and P. Knagenhjelm and M. Skoglund", - editor = "W. B. Kleijn and K. K. Paliwal", - title = "Theory for Transmission of Vector Quantization Data", - booktitle = "Speech Coding and Synthesis", - publisher = "Elsevier Science", - address = "Amsterdam, The Netherlands", - 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 the 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 - A. Ipri and C. N. King and P. J. Green and R. T. Flegal - and S. Pearson and W. A. Barrow and E. Dickey and K. Ping - and C. W. Tang and S. Van. Slyke and - F. Chen and J. Shi and J. C. Sturm and M. H. Lu", - title = "Design of an Improved Pixel for a Polysilicon - Active-Matrix Organic {LED} Display", - booktitle = "{SID} Tech. Dig.", - 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. -@manual{IEEEexample:motmanual, - title = "{FLEXChip} Signal Processor ({MC68175/D})", - organization = "Motorola", - year = "1996" -} - - -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. -@inproceedings{IEEEexample:confwithadddays, - author = "M. S. Yee and L. Hanzo", - title = "Radial Basis Function Decision Feedback Equaliser - Assisted Burst-by-burst Adaptive Modulation", - booktitle = "Proc. {IEEE} Globecom '99", - address = "Rio de Janeiro, Brazil", - 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. -@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 - Packet Loss", - booktitle = "Proc. {IEEE} {INFOCOM}'99", - volume = "1", - address = "New York, NY", - 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. -@inproceedings{IEEEexample:confwithpaper, - author = "M. Wegmuller and J. P. von der Weid and P. Oberson - and N. Gisin", - title = "High Resolution Fiber Distributed Measurements With - Coherent {OFDR}", - booktitle = "Proc. {ECOC}'00", - 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. -@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 - and G. Shtengel and A. Bond and D. G. Moodie and - A. D. Ellis", - title = "160 {Gbit/s} Single-channel Transmission Over 300 km - Nonzero-dispersion Fiber With Semiconductor Based - Transmitter and Demultiplexer", - booktitle = "Proc. {ECOC}'99", - year = "1999", - 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. -@inproceedings{IEEEexample:presentedatconf, - author = "S. G. Finn and M. M{\'e}dard and R. A. Barry", - title = "A Novel Approach to Automatic Protection Switching - Using Trees", - 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. -@mastersthesis{IEEEexample:masters, - author = "Nin C. Loh", - title = "High-Resolution Micromachined Interferometric - Accelerometer", - 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. -@mastersthesis{IEEEexample:masterstype, - author = "A. Karnik", - title = "Performance of {TCP} Congestion Control with Rate - Feedback: {TCP/ABR} and Rate Adaptive {TCP/IP}", - school = "Indian Institute of Science", - type = "M. Eng. thesis", - 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. -@phdthesis{IEEEexample:phdurl, - author = "Q. Li", - title = "Delay Characterization and Performance Control of - Wide-area Networks", - school = "Univ. of Delaware", - address = "Newark", - 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. -@techreport{IEEEexample:techrep, - author = "R. Jain and K. K. Ramakrishnan and D. M. Chiu", - title = "Congestion Avoidance in Computer Networks with a - Connectionless Network Layer", - institution = "Digital Equipment Corporation", - address = "MA", - 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. -@techreport{IEEEexample:techreptype, - author = "J. Padhye and V. Firoiu and D. Towsley", - title = "A Stochastic Model of {TCP} {R}eno Congestion Avoidance - and Control", - institution = "Univ. of Massachusetts", - address = "Amherst, MA", - 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. -@techreport{IEEEexample:techreptypeii, - author = "D. Middleton and A. D. Spaulding", - title = "A Tutorial Review of Elements of Weak Signal Detection - in Non-{G}aussian {EMI} Environments", - institution = "National Telecommunications and Information - Administration ({NTIA}), U.S. Dept. of Commerce", - type = "NTIA Report", - number = "86-194", - month = may, - year = "1986" -} - - -technical report, standards revision/change submission report -From the June 2004 issue of "IEEE Journal of Selected Areas in Communications", -page 928, reference #9. -Note that some journals do not abbreviate the task group: "TGe" => "Task Group E" -@techreport{IEEEexample:techrepstdsub, - author = "S. Kandala", - title = "Changes to {A}nnex {D}", - institution = "{IEEE} 802.11 {TGe}", - number = "02/680r0", - month = oct, - year = "2002" -} - - - - -an unpublished work -for unpublished types, the note field is required. The 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{IEEEexample:electronhowinfo, - author = "V. Jacobson", - title = "Modified {TCP} Congestion Avoidance Algorithm", - howpublished = "end2end-interest mailing list", - 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{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{IEEEexample:electronorgadd, - author = "D. H. Lorenz and A. Orda", - title = "Optimal Partition of {QoS} Requirements on Unicast - Paths and Multicast Trees", - organization = "Dept. Elect. Eng., Technion", - address = "Haifa, Israel", - 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 the 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", - assignee = "Hughes Aircraft Company", - address = "Los Angeles, CA", - title = "High-Speed Digital-to-{RF} Converter", - nationality = "United States", - number = "5668842", - dayfiled = "28", - monthfiled = feb, - yearfiled = "1995", - day = "16", - month = sep, - year = "1997" -} - - -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", - nationality = "Japanese", - number = "152932/92", - 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. -@patent{IEEEexample:frenchpatreq, - author = "F. Kowalik and M. Isard", - title = "Estimateur d'un D{\'e}faut de Fonctionnement - d'un Modulateur en Quadrature et {\'E}tage de Modulation - l'Utilisant", - language = "french", - nationality = "French", - type = "Patent Request", - number = "9500261", - 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 -@periodical{IEEEexample:periodical, - title = IEEE_M_PCOM # ", Special Issue on Wireless {ATM}", - volume = "3", - month = aug, - year = "1996", - key = "IEEE" -} - - - - - -a standard -The 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", - organization = "IEEE", - 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{IEEEexample:standardproposed, - title = "Fiber Channel Physical Interface ({FC-PI})", - institution = "NCITS", - address = "Washington, DC", - 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. -@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{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{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{IEEEexample:datasheet, - title = "{PDCA12-70} Data Sheet", - organization = "Opto Speed SA", - address = "Mezzovico, Switzerland" -} - - - - - -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. -@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. -@misc{IEEEexample:miscrfc, - author = "K. K. Ramakrishnan and S. Floyd", - title = "A Proposal to Add Explicit Congestion - Notification ({ECN}) to {IP}", - howpublished = "RFC 2481", - month = jan, - year = "1999" -} - - -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 - {F}requenzbereich 9 {kHz} bis 3 {GHz}", - language = "german", - 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. -@article{IEEEexample:bluebookarticle, - author = "{Consulative Committee for Space Data Systems (CCSDS)}", - title = "Telemetry Channel Coding", - journal = "Blue Book", - 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). -@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}", - 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. -@manual{IEEEexample:bluebookmanual, - title = "Telemetry Channel Coding", - howpublished = "ser. Blue Book, No. 4", - organization = "Consulative Committee for Space Data Systems (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 standard -Probably the best approach for this particular case because the work -is standard related. Note that the IEEE does not display the address for -standards. -@standard{IEEEexample:bluebookstandard, - title = "Telemetry Channel Coding", - howpublished = "ser. Blue Book, No. 4", - organization = "Consulative Committee for Space Data Systems (CCSDS)", - address = "Newport Beach, CA", - type = "Recommendation for Space Data System Standard", - number = "101.0-B-4", - 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_url -"no" turns off the display of the url field. -"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 -Will not have any effect (is disabled) if the display of urls is disabled. - -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. The 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 (if they are enabled). -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", - CTLuse_url = "yes", - CTLuse_forced_etal = "no", - CTLmax_names_forced_etal = "10", - CTLnames_show_etal = "1", - CTLuse_alt_spacing = "yes", - CTLalt_stretch_factor = "4", - CTLdash_repeated_names = "yes", - CTLname_format_string = "{f.~}{vv~}{ll}{, jj}", - 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 deleted file mode 100644 index ce6cc107f1b..00000000000 --- a/Master/texmf-dist/bibtex/bib/IEEEtran/IEEEfull.bib +++ /dev/null @@ -1,486 +0,0 @@ - -IEEEfull.bib -V1.14 (2015/08/28) -Copyright (c) 2002-2015 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/pkg/ieeetran -and/or -http://www.ieee.org/ - -Special thanks to Laura Hyslop, Ken Rawson, Kevin Lisankie and -Mona Mittra of the IEEE for their help in obtaining the information needed -to compile this file. Also, Volker Kuhlmann, Moritz Borgmann, -Yannick Berker, Nicolás Barabino, Chuanren Wu and Santiago Cogollos Borras -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 the 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. ** -************************************************************************* - - -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: The 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 the IEEE's formation from the IRE and AIEE in 1963). - - - - - - -IEEE Journals - - -aerospace and military -@STRING{IEEE_J_ANNE = "{IEEE} Transactions on Aeronautical and Navigational Electronics"} -@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_AS = "{IEEE} Transactions on Aerospace"} -@STRING{IEEE_J_AIRE = "{IEEE} Transactions on Airborne Electronics"} -@STRING{IEEE_J_MIL = "{IEEE} Transactions on Military Electronics"} - - - -autos, transportation and vehicles (non-aerospace) -@STRING{IEEE_J_ITS = "{IEEE} Transactions on Intelligent Transportation Systems"} -@STRING{IEEE_J_IV = "{IEEE} Transactions on Intelligent Vehicles"} -@STRING{IEEE_J_TTE = "{IEEE} Transactions on Transportation Electrification"} -@STRING{IEEE_J_VC = "{IEEE} Transactions on Vehicular Communications"} -@STRING{IEEE_J_VT = "{IEEE} Transactions on Vehicular Technology"} - - - -circuits, signals, systems, audio and controls -@STRING{IEEE_J_STSP = "{IEEE} Journal of Selected Topics in Signal Processing"} -@STRING{IEEE_J_SPL = "{IEEE} Signal Processing Letters"} -@STRING{IEEE_J_SYST = "{IEEE} Systems Journal"} -@STRING{IEEE_J_ASSP = "{IEEE} Transactions on Acoustics, Speech, and Signal Processing"} -@STRING{IEEE_J_AU = "{IEEE} Transactions on Audio"} -@STRING{IEEE_J_AUEA = "{IEEE} Transactions on Audio and Electroacoustics"} -in 2014 ASL became ASLP -@STRING{IEEE_J_ASLP = "{IEEE/ACM} Transactions on Audio, Speech, and Language Processing"} -@STRING{IEEE_J_ASL = "{IEEE} Transactions on Audio, Speech, and Language Processing"} -@STRING{IEEE_J_AC = "{IEEE} Transactions on Automatic Control"} -@STRING{IEEE_J_CAS = "{IEEE} Transactions on Circuits and Systems"} -@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_ETCAS = "{IEEE} Transactions on Emerging and Selected Topics in Circuits and Systems"} -@STRING{IEEE_J_SP = "{IEEE} Transactions on Signal Processing"} -@STRING{IEEE_J_SU = "{IEEE} Transactions on Sonics and Ultrasonics"} -@STRING{IEEE_J_SAP = "{IEEE} Transactions on Speech and Audio Processing"} -@STRING{IEEE_J_UE = "{IEEE} Transactions on Ultrasonics Engineering"} -@STRING{IEEE_J_UFFC = "{IEEE} Transactions on Ultrasonics, Ferroelectrics, and Frequency Control"} - - - -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"} -@STRING{IEEE_J_COMT = "{IEEE} Transactions on Communication Technology"} -@STRING{IEEE_J_WCOM = "{IEEE} Transactions on Wireless Communications"} -@STRING{IEEE_J_WCOML = "{IEEE} Wireless Communications Letters"} - - - -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"} -in 2011 CAPT became CPMT -@STRING{IEEE_J_CPMT = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology"} -@STRING{IEEE_J_CPMTA = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {A}"} -@STRING{IEEE_J_CPMTB = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {B}: Advanced Packaging"} -@STRING{IEEE_J_CPMTC = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {C}: Manufacturing"} -@STRING{IEEE_J_CAPTS = "{IEEE} Transactions on Components and Packaging Technologies"} -@STRING{IEEE_J_CAPT = "{IEEE} Transactions on Components and Packaging Technology"} -@STRING{IEEE_J_CPART = "{IEEE} Transactions on Component Parts"} -@STRING{IEEE_J_EPM = "{IEEE} Transactions on Electronics Packaging Manufacturing"} -@STRING{IEEE_J_MFT = "{IEEE} Transactions on Manufacturing Technology"} -@STRING{IEEE_J_PHP = "{IEEE} Transactions on Parts, Hybrids and Packaging"} -@STRING{IEEE_J_PMP = "{IEEE} Transactions on Parts, Materials and Packaging"} - - - -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 -@STRING{IEEE_J_BD = "{IEEE} Transactions on Big Data"} -@STRING{IEEE_J_IFS = "{IEEE} Transactions on Information Forensics and Security"} -@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 -@STRING{IEEE_J_CAL = "{IEEE} Computer Architecture Letters"} -@STRING{IEEE_J_ES = "{IEEE} Embedded Systems Letters"} -@STRING{IEEE_J_IOT = "{IEEE} Internet of Things Journal"} -@STRING{IEEE_J_XCDC = "{IEEE} Journal on Exploratory Solid-State Computational Devices and Circuits"} -@STRING{IEEE_J_MMCT = "{IEEE} Journal on Multiscale and Multiphysics Computational Techniques"} -@STRING{IEEE_J_SUSC = "{IEEE} Sustainable Computing"} -@STRING{IEEE_J_CC = "{IEEE} Transactions on Cloud Computing"} -@STRING{IEEE_J_CSS = "{IEEE} Transactions on Computational Social Systems"} -@STRING{IEEE_J_C = "{IEEE} Transactions on Computers"} -@STRING{IEEE_J_CNS = "{IEEE} Transactions on Control of Network Systems"} -@STRING{IEEE_J_DSC = "{IEEE} Transactions on Dependable and Secure Computing"} -@STRING{IEEE_J_ECOMP = "{IEEE} Transactions on Electronic Computers"} -@STRING{IEEE_J_ETC = "{IEEE} Transactions on Emerging Topics in Computing"} -@STRING{IEEE_J_EVC = "{IEEE} Transactions on Evolutionary Computation"} -@STRING{IEEE_J_FUZZ = "{IEEE} Transactions on Fuzzy Systems"} -@STRING{IEEE_J_MC = "{IEEE} Transactions on Mobile Computing"} -@STRING{IEEE_J_MSCS = "{IEEE} Transactions on Multi-Scale Computing Systems"} -@STRING{IEEE_J_NET = "{IEEE/ACM} Transactions on Networking"} -@STRING{IEEE_J_NSE = "{IEEE} Transactions on Network Science and Engineering"} -@STRING{IEEE_J_NSM = "{IEEE} Transactions on Network and Service Management"} -@STRING{IEEE_J_NN = "{IEEE} Transactions on Neural Networks"} -in 2012 NN became NNLS -@STRING{IEEE_J_NNLS = "{IEEE} Transactions on Neural Networks and Learning Systems"} -@STRING{IEEE_J_PDS = "{IEEE} Transactions on Parallel and Distributed Systems"} -@STRING{IEEE_J_SC = "{IEEE} Transactions on Services Computing"} -@STRING{IEEE_J_SIPN = "{IEEE} Transactions on Signal and Information Processing over Networks"} -@STRING{IEEE_J_SE = "{IEEE} Transactions on Software Engineering"} - - - -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, artificial intelligence and automation -@STRING{IEEE_J_JAS = "{IEEE/CAA} Journal of Automatica Sinica"} -@STRING{IEEE_J_JRA = "{IEEE} Journal of Robotics and Automation"} -@STRING{IEEE_J_AFFC = "{IEEE} Transactions on Affective Computing"} -@STRING{IEEE_J_ASE = "{IEEE} Transactions on Automation Science and Engineering"} -@STRING{IEEE_J_AMD = "{IEEE} Transactions on Autonomous Mental Development"} -@STRING{IEEE_J_CCN = "{IEEE} Transactions on Cognitive Communications and Networking"} -in 2015 AMD became CDS -@STRING{IEEE_J_CDS = "{IEEE} Transactions on Cognitive and Developmental Systems"} -@STRING{IEEE_J_CIAIG = "{IEEE} Transactions on Computational Intelligence and {AI} in Games"} -in 2013 SMCB became CYB -@STRING{IEEE_J_CYB = "{IEEE} Transactions on Cybernetics"} -@STRING{IEEE_J_H = "{IEEE} Transactions on Haptics"} -@STRING{IEEE_J_HFE = "{IEEE} Transactions on Human Factors in Electronics"} -in 2013 SMCC became HMS -@STRING{IEEE_J_HMS = "{IEEE} Transactions on Human-Machine Systems"} -@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_RAL = "{IEEE} Robotics and Automation Letters"} -@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"} -@STRING{IEEE_J_SMCC = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {C}: Applications and Reviews"} -in 2012 SMCA became SMCS -@STRING{IEEE_J_SMCS = "{IEEE} Transactions on Systems, Man, and Cybernetics: Systems"} -@STRING{IEEE_J_SSC = "{IEEE} Transactions on Systems Science and Cybernetics"} - - - -earth, wind, fire and water -@STRING{IEEE_J_GRSL = "{IEEE} Geoscience and Remote Sensing Letters"} -@STRING{IEEE_J_GE = "{IEEE} Transactions on Geoscience Electronics"} -@STRING{IEEE_J_GRS = "{IEEE} Transactions on Geoscience and Remote Sensing"} -@STRING{IEEE_J_OE = "{IEEE} Journal of Oceanic Engineering"} -@STRING{IEEE_J_STARS = "{IEEE} Journal of Selected Topics in Applied Earth Observations and Remote Sensing"} - - - -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_RITA = "{IEEE} Revista Iberoamericana de Technolog{\'{i}}as del Aprendizaje"} -@STRING{IEEE_J_EDU = "{IEEE} Transactions on Education"} -@STRING{IEEE_J_EM = "{IEEE} Transactions on Engineering Management"} -@STRING{IEEE_J_EWS = "{IEEE} Transactions on Engineering Writing and Speech"} -@STRING{IEEE_J_LT = "{IEEE} Transactions on Learning Technologies"} -@STRING{IEEE_J_PC = "{IEEE} Transactions on Professional Communication"} - - - -electromagnetics, antennas, EMI, magnetics and microwave -@STRING{IEEE_J_AWPL = "{IEEE} Antennas and Wireless Propagation Letters"} -@STRING{IEEE_J_MAGL = "{IEEE} Magnetics Letters"} -@STRING{IEEE_J_MGWL = "{IEEE} Microwave and Guided Wave Letters"} -@STRING{IEEE_J_MWCL = "{IEEE} Microwave and Wireless Components Letters"} -@STRING{IEEE_J_RFIC = "{IEEE} {RFIC} Journal"} -@STRING{IEEE_J_RFID = "{IEEE} {RFID} Journal"} -@STRING{IEEE_J_AP = "{IEEE} Transactions on Antennas and Propagation"} -@STRING{IEEE_J_EMC = "{IEEE} Transactions on Electromagnetic Compatibility"} -@STRING{IEEE_J_MAG = "{IEEE} Transactions on Magnetics"} -@STRING{IEEE_J_MTT = "{IEEE} Transactions on Microwave Theory and Techniques"} -@STRING{IEEE_J_RFI = "{IEEE} Transactions on Radio Frequency Interference"} -@STRING{IEEE_J_TTHZ = "{IEEE} Transactions on Terahertz Science and Technology"} -@STRING{IEEE_J_TJMJ = "{IEEE} Translation Journal on Magnetics in Japan"} - - - -energy, power and conversion -@STRING{IEEE_J_PHOT = "{IEEE} Journal of Photovoltaics"} -@STRING{IEEE_J_PEL = "{IEEE} Power Electronics Letters"} -@STRING{IEEE_J_PETS = "{IEEE} Power and Energy Technology Systems Journal"} -@STRING{IEEE_J_ESTPE = "{IEEE} Transactions on Emerging and Selected Topics in Power Electronics"} -@STRING{IEEE_J_EC = "{IEEE} Transactions on Energy Conversion"} -@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"} -@STRING{IEEE_J_PWRS = "{IEEE} Transactions on Power Systems"} -@STRING{IEEE_J_SG = "{IEEE} Transactions on Smart Grid"} -@STRING{IEEE_J_STE = "{IEEE} Transactions on Sustainable Energy"} - - - -industrial, commercial and consumer -@STRING{IEEE_J_PSE = "{IEEE} Journal of Product Safety Engineering"} -@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"} -@STRING{IEEE_J_CE = "{IEEE} Transactions on Consumer Electronics"} -@STRING{IEEE_J_IE = "{IEEE} Transactions on Industrial Electronics"} -@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"} - - - -instrumentation and measurement -@STRING{IEEE_J_IM = "{IEEE} Transactions on Instrumentation and Measurement"} - - - -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 -@STRING{IEEE_J_MEMS = "{IEEE/ASME} Journal of Microelectromechanical Systems"} -in 2014 MEMS became MEMSI -@STRING{IEEE_J_MEMSI = "{IEEE} Journal of Microelectromechanical Systems"} -@STRING{IEEE_J_MECH = "{IEEE/ASME} Transactions on Mechatronics"} - - - -medical and biological -@STRING{IEEE_J_BHI = "{IEEE} Journal of Biomedical and Health Informatics"} -@STRING{IEEE_J_TEHM = "{IEEE} Journal of Translational Engineering in Health and Medicine"} -@STRING{IEEE_J_LS = "{IEEE} Life Sciences Letters"} -@STRING{IEEE_J_RBME = "{IEEE} Reviews in Biomedical Engineering"} -@STRING{IEEE_J_BCAS = "{IEEE} Transactions on Biomedical Circuits and Systems"} -@STRING{IEEE_J_BMELC = "{IEEE} Transactions on Bio-Medical Electronics"} -B-ME later dropped the hyphen and became the BME -@STRING{IEEE_J_BME = "{IEEE} Transactions on Biomedical Engineering"} -@STRING{IEEE_J_B-ME = "{IEEE} Transactions on Bio-Medical Engineering"} -@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_MBSC = "{IEEE} Transactions on Molecular, Biological and Multi-Scale Communications"} -@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 -@STRING{IEEE_J_JLT = "{IEEE/OSA} Journal of Lightwave Technology"} -@STRING{IEEE_J_OCN = "{IEEE} Journal of Optical Communications and Networking"} -@STRING{IEEE_J_PJ = "{IEEE} Photonics Journal"} -@STRING{IEEE_J_PTL = "{IEEE} Photonics Technology Letters"} - - - -physics, electrons, nanotechnology, nuclear and quantum electronics -@STRING{IEEE_J_EDL = "{IEEE} Electron Device Letters"} -@STRING{IEEE_J_EDS = "{IEEE} Journal of Electron Devices Society"} -@STRING{IEEE_J_JQE = "{IEEE} Journal of Quantum Electronics"} -@STRING{IEEE_J_JSTQE = "{IEEE} Journal of Selected Topics in Quantum Electronics"} -@STRING{IEEE_J_ENANO = "{IEEE} Nanotechnology Express"} -@STRING{IEEE_J_ED = "{IEEE} Transactions on Electron Devices"} -@STRING{IEEE_J_NANO = "{IEEE} Transactions on Nanotechnology"} -@STRING{IEEE_J_NS = "{IEEE} Transactions on Nuclear Science"} -@STRING{IEEE_J_PS = "{IEEE} Transactions on Plasma Science"} - - - -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 -@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"} -@STRING{IEEE_J_SM = "{IEEE} Transactions on Semiconductor Manufacturing"} - - - -sensors -@STRING{IEEE_J_SENSOR = "{IEEE} Sensors Journal"} - - - -VLSI -@STRING{IEEE_J_VLSI = "{IEEE} Transactions on Very Large Scale Integration ({VLSI}) Systems"} - - - - - - -IEEE Magazines and Online Publications - - -@STRING{IEEE_O_ACC = "{IEEE} Access"} -@STRING{IEEE_M_AES = "{IEEE} Aerospace and Electronics Systems Magazine"} -@STRING{IEEE_M_HIST = "{IEEE} Annals of the History of Computing"} -@STRING{IEEE_M_AP = "{IEEE} Antennas and Propagation Magazine"} -@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Magazine"} -@STRING{IEEE_M_CHINAC = "China Communications Magazine"} -@STRING{IEEE_M_CD = "{IEEE} Circuits and Devices Magazine"} -@STRING{IEEE_M_CAS = "{IEEE} Circuits and Systems Magazine"} -@STRING{IEEE_M_COM = "{IEEE} Communications Magazine"} -@STRING{IEEE_M_COMSOC = "{IEEE} Communications Society Magazine"} -@STRING{IEEE_O_CSTO = "{IEEE} Communications Surveys and Tutorials"} -@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 = "Computer"} -@STRING{IEEE_M_CAP = "{IEEE} Computer Applications in Power"} -@STRING{IEEE_M_CGA = "{IEEE} Computer Graphics and Applications"} -@STRING{IEEE_M_CONC = "{IEEE} Concurrency"} -@STRING{IEEE_M_CS = "{IEEE} Control Systems Magazine"} -in 2012 DTC became DT -@STRING{IEEE_M_DT = "{IEEE} Design \&\ Test"} -@STRING{IEEE_M_DTC = "{IEEE} Design and Test of Computers"} -@STRING{IEEE_O_DSO = "{IEEE} Distributed Systems Online"} -@STRING{IEEE_M_EI = "{IEEE} Electrical Insulation Magazine"} -@STRING{IEEE_M_ETF = "{IEEE} Electrification Magazine"} -@STRING{IEEE_M_EMC = "{IEEE} Electromagnetic Compatibility Magazine"} -@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnology Review"} -@STRING{IEEE_M_EMR = "{IEEE} Engineering Management Review"} -@STRING{IEEE_M_EMB = "{IEEE} Engineering in Medicine and Biology Magazine"} -@STRING{IEEE_M_EXP = "{IEEE} Expert"} -@STRING{IEEE_M_GRS = "{IEEE} Geoscience and Remote Sensing Magazine"} -@STRING{IEEE_M_IA = "{IEEE} Industry Applications Magazine"} -@STRING{IEEE_M_IE = "{IEEE} Industrial Electronics Magazine"} -@STRING{IEEE_M_IM = "{IEEE} Instrumentation and Measurement Magazine"} -@STRING{IEEE_M_IS = "{IEEE} Intelligent Systems"} -@STRING{IEEE_M_ITS = "{IEEE} Intelligent Transportation Systems Magazine"} -@STRING{IEEE_M_IC = "{IEEE} Internet Computing"} -@STRING{IEEE_M_ITP = "{IEEE} {IT} Professional"} -@STRING{IEEE_M_MICRO = "{IEEE} Micro"} -@STRING{IEEE_M_MW = "{IEEE} Microwave Magazine"} -@STRING{IEEE_M_MM = "{IEEE} Multimedia"} -@STRING{IEEE_M_NANO = "{IEEE} Nanotechnology Magazine"} -@STRING{IEEE_M_NET = "{IEEE} Network"} -@STRING{IEEE_M_PCOM = "{IEEE} Personal Communications Magazine"} -@STRING{IEEE_M_PVC = "{IEEE} Pervasive Computing"} -@STRING{IEEE_M_POT = "{IEEE} Potentials"} -@STRING{IEEE_M_PEL = "{IEEE} Power Electronics Magazine"} -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_PULSE = "{IEEE} Pulse"} -@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_SSC = "{IEEE} Solid-State Circuits Magazine"} -@STRING{IEEE_M_SPECT = "{IEEE} Spectrum"} -@STRING{IEEE_M_SMC = "{IEEE} Systems, Man, and Cybernetics Magazine"} -@STRING{IEEE_M_TS = "{IEEE} Technology and Society Magazine"} -@STRING{IEEE_M_VT = "{IEEE} Vehicular Technology Magazine"} -@STRING{IEEE_M_WC = "{IEEE} Wireless Communications"} -@STRING{IEEE_M_TODAY = "Today's Engineer"} - - - - - --- -EOF diff --git a/Master/texmf-dist/bibtex/bib/ieeetran/IEEEabrv.bib b/Master/texmf-dist/bibtex/bib/ieeetran/IEEEabrv.bib new file mode 100644 index 00000000000..bcaccfc145f --- /dev/null +++ b/Master/texmf-dist/bibtex/bib/ieeetran/IEEEabrv.bib @@ -0,0 +1,489 @@ + +IEEEabrv.bib +V1.14 (2015/08/26) +Copyright (c) 2002-2015 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/pkg/ieeetran +and/or +http://www.ieee.org/ + +Special thanks to Laura Hyslop, Ken Rawson, Kevin Lisankie and +Mona Mittra of the IEEE for their help in obtaining the information needed +to compile this file. Also, Volker Kuhlmann, Moritz Borgmann, +Yannick Berker, Nicolás Barabino, Chuanren Wu and Santiago Cogollos Borras +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 the 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. ** +************************************************************************* + + +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." + + +The 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. Older, out-of-print IEEE titles are included (but not including titles + dating prior to the IEEE's formation from the IRE and AIEE in 1963). + + 4. Abbreviations comply with the official specifications of the IEEE. + + + + + + +IEEE Journals + + +aerospace and military +@STRING{IEEE_J_ANNE = "{IEEE} Trans. Aeronaut. Navig. Electron."} +@STRING{IEEE_J_AES = "{IEEE} Trans. Aerosp. Electron. Syst."} +@STRING{IEEE_J_ANE = "{IEEE} Trans. Aerosp. Navig. Electron."} +@STRING{IEEE_J_AS = "{IEEE} Trans. Aerosp."} +@STRING{IEEE_J_AIRE = "{IEEE} Trans. Airborne Electron."} +@STRING{IEEE_J_MIL = "{IEEE} Trans. Mil. Electron."} + + + +autos, transportation and vehicles (non-aerospace) +@STRING{IEEE_J_ITS = "{IEEE} Trans. Intell. Transp. Syst."} +@STRING{IEEE_J_IV = "{IEEE} Trans. Intell. Veh."} +@STRING{IEEE_J_TTE = "{IEEE} Trans. Transport. Electrific."} +@STRING{IEEE_J_VC = "{IEEE} Trans. Veh. Commun."} +@STRING{IEEE_J_VT = "{IEEE} Trans. Veh. Technol."} + + + +circuits, signals, systems, audio and controls +@STRING{IEEE_J_STSP = "{IEEE} J. Sel. Topics Signal Process."} +@STRING{IEEE_J_SPL = "{IEEE} Signal Process. Lett."} +@STRING{IEEE_J_SYST = "{IEEE} Syst. J."} +@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."} +in 2014 ASL became ASLP +@STRING{IEEE_J_ASLP = "{IEEE/ACM} Trans. Audio, Speech, Language Process."} +@STRING{IEEE_J_ASL = "{IEEE} Audio, Speech, Language Process."} +@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. Control Syst. Technol."} +@STRING{IEEE_J_ETCAS = "{IEEE} Trans. Emerg. Sel. Topics Circuits Syst."} +@STRING{IEEE_J_SP = "{IEEE} Trans. Signal Process."} +@STRING{IEEE_J_SU = "{IEEE} Trans. Sonics Ultrason."} +@STRING{IEEE_J_SAP = "{IEEE} Trans. Speech Audio Process."} +@STRING{IEEE_J_UE = "{IEEE} Trans. Ultrason. Eng."} +@STRING{IEEE_J_UFFC = "{IEEE} Trans. Ultrason., Ferroelectr., Freq. Control"} + + + +communications +@STRING{IEEE_J_COML = "{IEEE} Commun. Lett."} +@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."} +@STRING{IEEE_J_WCOML = "{IEEE} Wireless Commun. Lett."} + + + +components, packaging and manufacturing +@STRING{IEEE_J_ADVP = "{IEEE} Trans. Adv. Packag."} +@STRING{IEEE_J_CHMT = "{IEEE} Trans. Compon., Hybrids, Manuf. Technol."} +in 2011 CAPT became CPMT +@STRING{IEEE_J_CPMT = "{IEEE} Trans. Compon. Packag. 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_CAPTS = "{IEEE} Trans. Compon. Packag. Technol."} +@STRING{IEEE_J_CAPT = "{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. Comput. Aided Design"} +@STRING{IEEE_J_CAD = "{IEEE} Trans. Comput.-Aided Design Integr. Circuits Syst."} + + + +coding, data, information, knowledge +@STRING{IEEE_J_BD = "{IEEE} Trans. Big Data"} +@STRING{IEEE_J_IFS = "{IEEE} Trans. Inf. Forensics Security"} +@STRING{IEEE_J_IT = "{IEEE} Trans. Inf. Theory"} +@STRING{IEEE_J_KDE = "{IEEE} Trans. Knowl. Data Eng."} + + + +computers, computation, networking and software +@STRING{IEEE_J_CAL = "{IEEE} Comput. Archit. Lett."} +@STRING{IEEE_J_ES = "{IEEE} Embedded Syst. Lett."} +@STRING{IEEE_J_IOT = "{IEEE} Internet Things J."} +@STRING{IEEE_J_XCDC = "{IEEE} J. Explor. Solid-State Computat. Devices Circuits"} +@STRING{IEEE_J_MMCT = "{IEEE} J. Multiscale and Multiphys. Comput. Techn."} +@STRING{IEEE_J_SUSC = "{IEEE} Sustain. Comput."} +@STRING{IEEE_J_CC = "{IEEE} Trans. on Cloud Comput."} +@STRING{IEEE_J_CSS = "{IEEE} Trans. Comput. Social Syst."} +@STRING{IEEE_J_C = "{IEEE} Trans. Comput."} +@STRING{IEEE_J_CNS = "{IEEE} Trans. Control Netw. Syst."} +@STRING{IEEE_J_DSC = "{IEEE} Trans. Depend. Sec. Comput."} +@STRING{IEEE_J_ECOMP = "{IEEE} Trans. Electron. Comput."} +@STRING{IEEE_J_ETC = "{IEEE} Trans. Emerg. Topics Comput."} +@STRING{IEEE_J_EVC = "{IEEE} Trans. Evol. Comput."} +@STRING{IEEE_J_FUZZ = "{IEEE} Trans. Fuzzy Syst."} +@STRING{IEEE_J_MC = "{IEEE} Trans. Mobile Comput."} +@STRING{IEEE_J_MSCS = "{IEEE} Trans. Multi-Scale Comput. Syst."} +@STRING{IEEE_J_NET = "{IEEE/ACM} Trans. Netw."} +@STRING{IEEE_J_NSE = "{IEEE} Trans. Netw. Sci. Eng."} +@STRING{IEEE_J_NSM = "{IEEE} Trans. Netw. Service Manag."} +@STRING{IEEE_J_NN = "{IEEE} Trans. Neural Netw."} +in 2012 NN became NNLS +@STRING{IEEE_J_NNLS = "{IEEE} Trans. Neural Netw. Learn. Syst."} +@STRING{IEEE_J_PDS = "{IEEE} Trans. Parallel Distrib. Syst."} +@STRING{IEEE_J_SC = "{IEEE} Trans. Serv. Comput."} +@STRING{IEEE_J_SIPN = "{IEEE} Trans. Signal Inf. Process. Netw."} +@STRING{IEEE_J_SE = "{IEEE} Trans. Softw. Eng."} + + + +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. Vis. Comput. Graphics"} + + + +cybernetics, ergonomics, robots, man-machine, artificial intelligence and automation +@STRING{IEEE_J_JAS = "{IEEE/CAA} J. Autom. Sinica"} +@STRING{IEEE_J_JRA = "{IEEE} J. Robot. Autom."} +@STRING{IEEE_J_AFFC = "{IEEE} Trans. Affect. Comput."} +@STRING{IEEE_J_ASE = "{IEEE} Trans. Autom. Sci. Eng."} +@STRING{IEEE_J_AMD = "{IEEE} Trans. Auton. Mental Develop."} +@STRING{IEEE_J_CCN = "{IEEE} Trans. on Cogn. Commun. Netw."} +in 2015 AMD became CDS +@STRING{IEEE_J_CDS = "{IEEE} Trans. Cogn. Develop. Syst."} +@STRING{IEEE_J_CIAIG = "{IEEE} Trans. Comput. Intell. {AI} in Games"} +in 2013 SMCB became CYB +@STRING{IEEE_J_CYB = "{IEEE} Trans. Cybern."} +@STRING{IEEE_J_H = "{IEEE} Trans. Haptics"} +@STRING{IEEE_J_HFE = "{IEEE} Trans. Hum. Factors Electron."} +in 2013 SMCC became HMS +@STRING{IEEE_J_HMS = "{IEEE} Trans. Human-Mach. Syst."} +@STRING{IEEE_J_MMS = "{IEEE} Trans. Man-Mach. Syst."} +@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_RAL = "{IEEE} Robot. Autom. Lett."} +@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}"} +in 2012 SMCA became SMCS +@STRING{IEEE_J_SMCS = "{IEEE} Trans. Syst., Man, Cybern., Syst."} +@STRING{IEEE_J_SSC = "{IEEE} Trans. Syst. Sci. Cybern."} + + + +earth, wind, fire and water +@STRING{IEEE_J_GRSL = "{IEEE} Geosci. Remote Sens. Lett."} +@STRING{IEEE_J_GE = "{IEEE} Trans. Geosci. Electron."} +@STRING{IEEE_J_GRS = "{IEEE} Trans. Geosci. Remote Sens."} +@STRING{IEEE_J_OE = "{IEEE} J. Ocean. Eng."} +@STRING{IEEE_J_STARS = "{IEEE} J. Sel. Topics Appl. Earth Observ. Remote Sens."} + + + +education, engineering, history, IEEE, professional +@STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."} +@STRING{IEEE_J_PROC = "Proc. {IEEE}"} +@STRING{IEEE_J_RITA = "{IEEE} Revista Iberoamericana de Technolog{\'{i}}as del Aprendizaje"} +@STRING{IEEE_J_EDU = "{IEEE} Trans. Educ."} +@STRING{IEEE_J_EM = "{IEEE} Trans. Eng. Manag."} +@STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"} +@STRING{IEEE_J_LT = "{IEEE} Trans. Learn. Technol."} +@STRING{IEEE_J_PC = "{IEEE} Trans. Prof. Commun."} + + + +electromagnetics, antennas, EMI, magnetics and microwave +@STRING{IEEE_J_AWPL = "{IEEE} Antennas Wireless Propag. Lett."} +@STRING{IEEE_J_MAGL = "{IEEE} Magn. Lett."} +@STRING{IEEE_J_MGWL = "{IEEE} Microw. Guided Wave Lett."} +@STRING{IEEE_J_MWCL = "{IEEE} Microw. Wireless Compon. Lett."} +@STRING{IEEE_J_RFIC = "{IEEE} {RFIC} J."} +@STRING{IEEE_J_RFID = "{IEEE} {RFID} J."} +@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. Microw. Theory Techn."} +@STRING{IEEE_J_RFI = "{IEEE} Trans. Radio Freq. Interference"} +@STRING{IEEE_J_TTHZ = "{IEEE} Trans. {THz} Sci. Technol."} +@STRING{IEEE_J_TJMJ = "{IEEE} Transl. J. Magn. Jpn."} + + + +energy, power and conversion +@STRING{IEEE_J_PHOT = "{IEEE} J. Photovolt."} +@STRING{IEEE_J_PEL = "{IEEE} Power Electron. Lett."} +@STRING{IEEE_J_PETS = "{IEEE} Power Energy Technol. Syst. J."} +@STRING{IEEE_J_ESTPE = "{IEEE} Trans. Emerg. Sel. Topics Power Electron."} +@STRING{IEEE_J_EC = "{IEEE} Trans. Energy Convers."} +@STRING{IEEE_J_PWRAS = "{IEEE} Trans. Power App. Syst."} +@STRING{IEEE_J_PWRD = "{IEEE} Trans. Power Del."} +@STRING{IEEE_J_PWRE = "{IEEE} Trans. Power Electron."} +@STRING{IEEE_J_PWRS = "{IEEE} Trans. Power Syst."} +@STRING{IEEE_J_SG = "{IEEE} Trans. Smart Grid"} +@STRING{IEEE_J_STE = "{IEEE} Trans. Sustain. Energy"} + + + +industrial, commercial and consumer +@STRING{IEEE_J_PSE = "{IEEE} J. Product Safety Eng."} +@STRING{IEEE_J_APPIND = "{IEEE} Trans. Appl. Ind."} +@STRING{IEEE_J_BC = "{IEEE} Trans. Broadcast."} +@STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"} +@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. Appl."} +@STRING{IEEE_J_IGA = "{IEEE} Trans. Ind. Gen. Appl."} +@STRING{IEEE_J_IINF = "{IEEE} Trans. Ind. Informat."} + + + +instrumentation and measurement +@STRING{IEEE_J_IM = "{IEEE} Trans. Instrum. Meas."} + + + +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_MEMS = "J. Microelectromech. Syst."} +in 2014 MEMS became MEMSI +@STRING{IEEE_J_MEMSI = "J. Microelectromech. Syst."} +@STRING{IEEE_J_MECH = "{IEEE/ASME} Trans. Mechatronics"} + + + +medical and biological +@STRING{IEEE_J_BHI = "{IEEE} J. Biomed. Health Inform."} +@STRING{IEEE_J_TEHM = "{IEEE} J. Transl. Eng. Health Med."} +@STRING{IEEE_J_LS = "{IEEE} Life Sci. Lett."} +@STRING{IEEE_J_RBME = "{IEEE} Rev. Biomed. Eng."} +@STRING{IEEE_J_BCAS = "{IEEE} Trans. Biomed. Circuits Syst."} +@STRING{IEEE_J_BMELC = "{IEEE} Trans. Bio-Med. Electron."} +B-ME later dropped the hyphen and became the BME +@STRING{IEEE_J_BME = "{IEEE} Trans. Biomed. Eng."} +@STRING{IEEE_J_B-ME = "{IEEE} Trans. Bio-Med. Eng."} +@STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biol. 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."} +@STRING{IEEE_J_MBSC = "{IEEE} Trans. Mol. Biol. Multi-Scale Commun."} +@STRING{IEEE_J_NB = "{IEEE} Trans. Nanobiosci."} +@STRING{IEEE_J_NSRE = "{IEEE} Trans. Neural Syst. Rehabil. Eng."} +@STRING{IEEE_J_RE = "{IEEE} Trans. Rehabil. Eng."} + + + +optics, lightwave and photonics +@STRING{IEEE_J_JLT = "J. Lightw. Technol."} +@STRING{IEEE_J_OCN = "{IEEE} J. Opt. Commun. Netw."} +@STRING{IEEE_J_PJ = "{IEEE} Photon. J."} +@STRING{IEEE_J_PTL = "{IEEE} Photon. Technol. Lett."} + + + +physics, electrons, nanotechnology, nuclear and quantum electronics +@STRING{IEEE_J_EDL = "{IEEE} Electron Device Lett."} +@STRING{IEEE_J_EDS = "{IEEE} J. Electron Devices Soc."} +@STRING{IEEE_J_JQE = "{IEEE} J. Quantum Electron."} +@STRING{IEEE_J_JSTQE = "{IEEE} J. Sel. Topics Quantum Electron."} +@STRING{IEEE_J_ENANO = "{IEEE} Nanotechnol. Express"} +@STRING{IEEE_J_ED = "{IEEE} Trans. Electron Devices"} +@STRING{IEEE_J_NANO = "{IEEE} Trans. Nanotechnol."} +@STRING{IEEE_J_NS = "{IEEE} Trans. Nucl. Sci."} +@STRING{IEEE_J_PS = "{IEEE} Trans. Plasma Sci."} + + + +reliability +@STRING{IEEE_J_DMR = "{IEEE} Trans. Device Mater. Rel."} +@STRING{IEEE_J_R = "{IEEE} Trans. Rel."} + + + +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. Supercond."} +@STRING{IEEE_J_SM = "{IEEE} Trans. Semicond. Manuf."} + + + +sensors +@STRING{IEEE_J_SENSOR = "{IEEE} Sensors J."} + + + +VLSI +@STRING{IEEE_J_VLSI = "{IEEE} Trans. {VLSI} Syst."} + + + + + + +IEEE Magazines and Online Publications + + +@STRING{IEEE_O_ACC = "{IEEE} Access"} +@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_CHINAC = "China Commun."} +@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."} +@STRING{IEEE_O_CSTO = "{IEEE} Commun. Surveys Tuts."} +@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 = "Computer"} +@STRING{IEEE_M_CAP = "{IEEE} Comput. Appl. Power"} +@STRING{IEEE_M_CGA = "{IEEE} Comput. Graph. Appl."} +@STRING{IEEE_M_CONC = "{IEEE} Concurrency"} +@STRING{IEEE_M_CS = "{IEEE} Control Syst. Mag."} +in 2012 DTC became DT +@STRING{IEEE_M_DT = "{IEEE} Des. Test"} +@STRING{IEEE_M_DTC = "{IEEE} Des. Test. Comput."} +@STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"} +@STRING{IEEE_M_EI = "{IEEE} Electr. Insul. Mag."} +@STRING{IEEE_M_ETF = "{IEEE} Electrific. Mag."} +@STRING{IEEE_M_EMC = "{IEEE} Electromagn. Compat."} +@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnol. Rev."} +@STRING{IEEE_M_EMR = "{IEEE} Eng. Manag. Rev."} +@STRING{IEEE_M_EMB = "{IEEE} Eng. Med. Biol. Mag."} +@STRING{IEEE_M_EXP = "{IEEE} Expert"} +@STRING{IEEE_M_GRS = "{IEEE} Geosci. Remote Sens. Mag."} +@STRING{IEEE_M_IA = "{IEEE} Ind. Appl. Mag."} +@STRING{IEEE_M_IE = "{IEEE} Ind. Electron. Mag."} +@STRING{IEEE_M_IM = "{IEEE} Instrum. Meas. Mag."} +@STRING{IEEE_M_IS = "{IEEE} Intell. Syst."} +@STRING{IEEE_M_ITS = "{IEEE} Intell. Transp. Syst. Mag."} +@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} Microw. Mag."} +@STRING{IEEE_M_MM = "{IEEE} Multimedia"} +@STRING{IEEE_M_NANO = "{IEEE} Nanotechnol. Mag."} +@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_PVC = "{IEEE} Pervasive Comput."} +@STRING{IEEE_M_POT = "{IEEE} Potentials"} +@STRING{IEEE_M_PEL = "{IEEE} Power Electron. Mag."} +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_PULSE = "{IEEE} Pulse"} +@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_SSC = "{IEEE} Solid-State Circuits Mag."} +@STRING{IEEE_M_SPECT = "{IEEE} Spectr."} +@STRING{IEEE_M_SMC = "{IEEE} Syst., Man, Cybern. Mag."} +@STRING{IEEE_M_TS = "{IEEE} Technol. Soc. Mag."} +@STRING{IEEE_M_VT = "{IEEE} Veh. Technol. Mag."} +@STRING{IEEE_M_WC = "{IEEE} Wireless Commun."} +@STRING{IEEE_M_TODAY = "Today's Engineer"} + + + + + +-- +EOF diff --git a/Master/texmf-dist/bibtex/bib/ieeetran/IEEEexample.bib b/Master/texmf-dist/bibtex/bib/ieeetran/IEEEexample.bib new file mode 100644 index 00000000000..8dbc1075adf --- /dev/null +++ b/Master/texmf-dist/bibtex/bib/ieeetran/IEEEexample.bib @@ -0,0 +1,1203 @@ + +IEEEexample.bib +V1.14 (2015/08/26) +Copyright (c) 2002-2015 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/pkg/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 the 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. ** +************************************************************************* + + +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 +IEEEtran homepage +@electronic{IEEEhowto:IEEEtranpage, + author = "Michael Shell", + title = "{IEEE}tran Homepage", + url = "http://www.michaelshell.org/tex/ieeetran/", + year = "2015" +} + + +the distribution site for IEEEtran.bst +@electronic{IEEEexample:shellCTANpage, + author = "Michael Shell", + title = "{IEEE}tran Webpage on {CTAN}", + url = "http://www.ctan.org/pkg/ieeetran", + year = "2015" +} + + +the IEEE website +sort key is needed for sorting styles +@electronic{IEEEexample:IEEEwebsite, + title = "The {IEEE} Website", + url = "http://www.ieee.org/", + year = "2015", + 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. +@electronic{IEEEexample:bibtexuser, + author = "Oren Patashnik", + title = "{{\BibTeX}}ing", + howpublished = "{btxdoc.pdf}", + url = "http://www.ctan.org/pkg/bibtex", + month = nov, + year = "2010" +} + + +The BibTeX style designer's guide. +@electronic{IEEEexample:bibtexdesign, + author = "Oren Patashnik", + title = "Designing {{\BibTeX}} Styles", + howpublished = "{btxhak.pdf}", + url = "http://www.ctan.org/pkg/bibtex", + month = nov, + year = "2010" +} + + +A comprehensive BibTeX tutorial. +@electronic{IEEEexample:tamethebeast, + author = "Nicolas Markey", + title = "Tame the BeaST --- The B to X of {{\BibTeX}}", + url = "http://www.ctan.org/pkg/tamethebeast", + month = oct, + year = "2009" +} + + +The BibTeX Tips and FAQ guide. +@electronic{IEEEexample:bibtexFAQ, + author = "David Hoadley and Michael Shell", + title = "{{\BibTeX}} Tips and {FAQ}", + howpublished = "{btxFAQ.pdf}", + url = "http://mirror.ctan.org/biblio/bibtex/contrib/doc/btxFAQ.pdf", + month = jan, + year = "2007" +} + + +The TeX FAQ +@electronic{IEEEexample:texfaq, + author = "Robin Fairbairns", + title = "The {{\TeX}} {FAQ}", + url = "http://www.tex.ac.uk/", + month = jun, + year = "2014" +} + + +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.ws/kijoo2000/", + month = nov, + year = "2005" +} + + +TeX User Group Bibliography Archive +@electronic{IEEEexample:beebe_archive, + author = "Nelson H. F. Beebe", + title = "{{\TeX}} User Group Bibliography Archive", + url = "http://www.math.utah.edu/pub/tex/bib/index-table.html", + month = dec, + year = "2010" +} + + +@electronic{IEEEexample:natbib, + author = "Patrick W. Daly and Arthur Ogawa", + title = "The natbib package", + url = "http://www.ctan.org/pkg/natbib", + month = sep, + year = "2010" +} + + +@electronic{IEEEexample:urlsty, + author = "Donald Arseneau", + title = "The url package", + url = "http://www.ctan.org/pkg/url", + month = dec, + year = "2013" +} + + +@electronic{IEEEexample:hyperref, + author = "Sebastian Rahtz and Heiko Oberdiek", + title = "The hyperref package", + url = "http://www.ctan.org/pkg/hyperref", + month = nov, + year = "2012" +} + + +@electronic{IEEEexample:breakurl, + author = "Vilar da Camara Neto", + title = "The breakurl package", + url = "http://www.ctan.org/pkg/breakurl", + month = apr, + year = "2013", +} + + +@electronic{IEEEexample:babel, + author = "Johannes L. Braams and Javier Bezos", + title = "The {Babel} package", + url = "http://www.ctan.org/pkg/babel", + month = sep, + year = "2014" +} + + +@electronic{IEEEexample:multibib, + author = "Thorsten Hansen", + title = "The multibib package", + url = "http://www.ctan.org/pkg/multibib", + month = dec, + year = "2008" +} + + +@electronic{IEEEexample:biblatex, + author = "Philipp Lehman and Philip Kime", + title = "The biblatex package", + url = "http://www.ctan.org/pkg/biblatex", + month = apr, + year = "2015" +} + + + + +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. +@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 + Poly-{Si} {TFT}", + journal = IEEE_J_EDL, + volume = "20", + 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. +@article{IEEEexample:articleetal, + author = "F. Delorme and others", + title = "Butt-jointed {DBR} Laser With 15 {nm} Tunability Grown + in Three {MOVPE} Steps", + journal = "Electron. Lett.", + volume = "31", + 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. +@inproceedings{IEEEexample:conf_typical, + author = "R. K. Gupta and S. D. Senturia", + title = "Pull-in Time Dynamics as a Measure of Absolute Pressure", + booktitle = "Proc. {IEEE} International Workshop on + Microelectromechanical Systems ({MEMS}'97)", + address = "Nagoya, Japan", + month = jan, + year = "1997", + pages = "290-294" +} + + +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 + +journal article with large page numbers, the 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 the 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", + title = "Midgap Traps Related to Compensation Processes in + {CdTe} Alloys", + journal = "Phys. Rev. B.", + volume = "56", + 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. +@article{IEEEexample:articledualmonths, + author = "Y. Okada and K. Dejima and T. Ohishi", + title = "Analysis and Comparison of {PM} Synchronous Motor and + Induction Motor Type Magnetic Bearings", + journal = IEEE_J_IA, + volume = "31", + 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. +@misc{IEEEexample:TBPmisc, + author = "M. Coates and A. Hero and R. Nowak and B. Yu", + title = "Internet Tomography", + howpublished = IEEE_M_SP, + 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. +@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{IEEEexample:bookwitheditor, + editor = "J. C. Candy and G. C. Temes", + title = "Oversampling Delta-Sigma Data Converters Theory, + Design and Simulation", + 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 the 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.", + title = "Laser Assisted Microtechnology", + edition = "Second", + 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{IEEEexample:bookwithseriesvolume, + editor = "J. Breckling", + title = "The Analysis of Directional Time Series: Applications to + Wind Speed and Direction", + series = "Lecture Notes in Statistics", + publisher = "Springer", + 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{IEEEexample:inbook, + author = "H. E. Rose", + title = "A Course in Number Theory", + publisher = "Oxford Univ. Press", + 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{IEEEexample:inbookpagesnote, + author = "B. K. Bul", + title = "Theory Principles and Design of Magnetic Circuits", + publisher = "Energia Press", + address = "Moscow", + 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{IEEEexample:incollection, + author = "W. V. Sorin", + editor = "D. Derickson", + title = "Optical Reflectometry for Component Characterization", + booktitle = "Fiber Optic Test and Measurement", + 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{IEEEexample:incollectionwithseries, + author = "J. B. Anderson and K. Tepe", + title = "Properties of the Tailbiting {BCJR} Decoder", + booktitle = "Codes, Systems and Graphical Models", + series = "{IMA} Volumes in Mathematics and Its Applications", + publisher = "Springer-Verlag", + 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{IEEEexample:incollection_chpp, + author = "P. Hedelin and P. Knagenhjelm and M. Skoglund", + editor = "W. B. Kleijn and K. K. Paliwal", + title = "Theory for Transmission of Vector Quantization Data", + booktitle = "Speech Coding and Synthesis", + publisher = "Elsevier Science", + address = "Amsterdam, The Netherlands", + 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 the 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 + A. Ipri and C. N. King and P. J. Green and R. T. Flegal + and S. Pearson and W. A. Barrow and E. Dickey and K. Ping + and C. W. Tang and S. Van. Slyke and + F. Chen and J. Shi and J. C. Sturm and M. H. Lu", + title = "Design of an Improved Pixel for a Polysilicon + Active-Matrix Organic {LED} Display", + booktitle = "{SID} Tech. Dig.", + 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. +@manual{IEEEexample:motmanual, + title = "{FLEXChip} Signal Processor ({MC68175/D})", + organization = "Motorola", + year = "1996" +} + + +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. +@inproceedings{IEEEexample:confwithadddays, + author = "M. S. Yee and L. Hanzo", + title = "Radial Basis Function Decision Feedback Equaliser + Assisted Burst-by-burst Adaptive Modulation", + booktitle = "Proc. {IEEE} Globecom '99", + address = "Rio de Janeiro, Brazil", + 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. +@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 + Packet Loss", + booktitle = "Proc. {IEEE} {INFOCOM}'99", + volume = "1", + address = "New York, NY", + 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. +@inproceedings{IEEEexample:confwithpaper, + author = "M. Wegmuller and J. P. von der Weid and P. Oberson + and N. Gisin", + title = "High Resolution Fiber Distributed Measurements With + Coherent {OFDR}", + booktitle = "Proc. {ECOC}'00", + 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. +@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 + and G. Shtengel and A. Bond and D. G. Moodie and + A. D. Ellis", + title = "160 {Gbit/s} Single-channel Transmission Over 300 km + Nonzero-dispersion Fiber With Semiconductor Based + Transmitter and Demultiplexer", + booktitle = "Proc. {ECOC}'99", + year = "1999", + 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. +@inproceedings{IEEEexample:presentedatconf, + author = "S. G. Finn and M. M{\'e}dard and R. A. Barry", + title = "A Novel Approach to Automatic Protection Switching + Using Trees", + 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. +@mastersthesis{IEEEexample:masters, + author = "Nin C. Loh", + title = "High-Resolution Micromachined Interferometric + Accelerometer", + 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. +@mastersthesis{IEEEexample:masterstype, + author = "A. Karnik", + title = "Performance of {TCP} Congestion Control with Rate + Feedback: {TCP/ABR} and Rate Adaptive {TCP/IP}", + school = "Indian Institute of Science", + type = "M. Eng. thesis", + 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. +@phdthesis{IEEEexample:phdurl, + author = "Q. Li", + title = "Delay Characterization and Performance Control of + Wide-area Networks", + school = "Univ. of Delaware", + address = "Newark", + 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. +@techreport{IEEEexample:techrep, + author = "R. Jain and K. K. Ramakrishnan and D. M. Chiu", + title = "Congestion Avoidance in Computer Networks with a + Connectionless Network Layer", + institution = "Digital Equipment Corporation", + address = "MA", + 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. +@techreport{IEEEexample:techreptype, + author = "J. Padhye and V. Firoiu and D. Towsley", + title = "A Stochastic Model of {TCP} {R}eno Congestion Avoidance + and Control", + institution = "Univ. of Massachusetts", + address = "Amherst, MA", + 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. +@techreport{IEEEexample:techreptypeii, + author = "D. Middleton and A. D. Spaulding", + title = "A Tutorial Review of Elements of Weak Signal Detection + in Non-{G}aussian {EMI} Environments", + institution = "National Telecommunications and Information + Administration ({NTIA}), U.S. Dept. of Commerce", + type = "NTIA Report", + number = "86-194", + month = may, + year = "1986" +} + + +technical report, standards revision/change submission report +From the June 2004 issue of "IEEE Journal of Selected Areas in Communications", +page 928, reference #9. +Note that some journals do not abbreviate the task group: "TGe" => "Task Group E" +@techreport{IEEEexample:techrepstdsub, + author = "S. Kandala", + title = "Changes to {A}nnex {D}", + institution = "{IEEE} 802.11 {TGe}", + number = "02/680r0", + month = oct, + year = "2002" +} + + + + +an unpublished work +for unpublished types, the note field is required. The 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{IEEEexample:electronhowinfo, + author = "V. Jacobson", + title = "Modified {TCP} Congestion Avoidance Algorithm", + howpublished = "end2end-interest mailing list", + 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{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{IEEEexample:electronorgadd, + author = "D. H. Lorenz and A. Orda", + title = "Optimal Partition of {QoS} Requirements on Unicast + Paths and Multicast Trees", + organization = "Dept. Elect. Eng., Technion", + address = "Haifa, Israel", + 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 the 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", + assignee = "Hughes Aircraft Company", + address = "Los Angeles, CA", + title = "High-Speed Digital-to-{RF} Converter", + nationality = "United States", + number = "5668842", + dayfiled = "28", + monthfiled = feb, + yearfiled = "1995", + day = "16", + month = sep, + year = "1997" +} + + +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", + nationality = "Japanese", + number = "152932/92", + 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. +@patent{IEEEexample:frenchpatreq, + author = "F. Kowalik and M. Isard", + title = "Estimateur d'un D{\'e}faut de Fonctionnement + d'un Modulateur en Quadrature et {\'E}tage de Modulation + l'Utilisant", + language = "french", + nationality = "French", + type = "Patent Request", + number = "9500261", + 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 +@periodical{IEEEexample:periodical, + title = IEEE_M_PCOM # ", Special Issue on Wireless {ATM}", + volume = "3", + month = aug, + year = "1996", + key = "IEEE" +} + + + + + +a standard +The 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", + organization = "IEEE", + 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{IEEEexample:standardproposed, + title = "Fiber Channel Physical Interface ({FC-PI})", + institution = "NCITS", + address = "Washington, DC", + 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. +@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{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{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{IEEEexample:datasheet, + title = "{PDCA12-70} Data Sheet", + organization = "Opto Speed SA", + address = "Mezzovico, Switzerland" +} + + + + + +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. +@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. +@misc{IEEEexample:miscrfc, + author = "K. K. Ramakrishnan and S. Floyd", + title = "A Proposal to Add Explicit Congestion + Notification ({ECN}) to {IP}", + howpublished = "RFC 2481", + month = jan, + year = "1999" +} + + +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 + {F}requenzbereich 9 {kHz} bis 3 {GHz}", + language = "german", + 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. +@article{IEEEexample:bluebookarticle, + author = "{Consulative Committee for Space Data Systems (CCSDS)}", + title = "Telemetry Channel Coding", + journal = "Blue Book", + 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). +@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}", + 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. +@manual{IEEEexample:bluebookmanual, + title = "Telemetry Channel Coding", + howpublished = "ser. Blue Book, No. 4", + organization = "Consulative Committee for Space Data Systems (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 standard +Probably the best approach for this particular case because the work +is standard related. Note that the IEEE does not display the address for +standards. +@standard{IEEEexample:bluebookstandard, + title = "Telemetry Channel Coding", + howpublished = "ser. Blue Book, No. 4", + organization = "Consulative Committee for Space Data Systems (CCSDS)", + address = "Newport Beach, CA", + type = "Recommendation for Space Data System Standard", + number = "101.0-B-4", + 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_url +"no" turns off the display of the url field. +"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 +Will not have any effect (is disabled) if the display of urls is disabled. + +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. The 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 (if they are enabled). +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", + CTLuse_url = "yes", + CTLuse_forced_etal = "no", + CTLmax_names_forced_etal = "10", + CTLnames_show_etal = "1", + CTLuse_alt_spacing = "yes", + CTLalt_stretch_factor = "4", + CTLdash_repeated_names = "yes", + CTLname_format_string = "{f.~}{vv~}{ll}{, jj}", + 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 new file mode 100644 index 00000000000..ce6cc107f1b --- /dev/null +++ b/Master/texmf-dist/bibtex/bib/ieeetran/IEEEfull.bib @@ -0,0 +1,486 @@ + +IEEEfull.bib +V1.14 (2015/08/28) +Copyright (c) 2002-2015 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/pkg/ieeetran +and/or +http://www.ieee.org/ + +Special thanks to Laura Hyslop, Ken Rawson, Kevin Lisankie and +Mona Mittra of the IEEE for their help in obtaining the information needed +to compile this file. Also, Volker Kuhlmann, Moritz Borgmann, +Yannick Berker, Nicolás Barabino, Chuanren Wu and Santiago Cogollos Borras +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 the 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. ** +************************************************************************* + + +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: The 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 the IEEE's formation from the IRE and AIEE in 1963). + + + + + + +IEEE Journals + + +aerospace and military +@STRING{IEEE_J_ANNE = "{IEEE} Transactions on Aeronautical and Navigational Electronics"} +@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_AS = "{IEEE} Transactions on Aerospace"} +@STRING{IEEE_J_AIRE = "{IEEE} Transactions on Airborne Electronics"} +@STRING{IEEE_J_MIL = "{IEEE} Transactions on Military Electronics"} + + + +autos, transportation and vehicles (non-aerospace) +@STRING{IEEE_J_ITS = "{IEEE} Transactions on Intelligent Transportation Systems"} +@STRING{IEEE_J_IV = "{IEEE} Transactions on Intelligent Vehicles"} +@STRING{IEEE_J_TTE = "{IEEE} Transactions on Transportation Electrification"} +@STRING{IEEE_J_VC = "{IEEE} Transactions on Vehicular Communications"} +@STRING{IEEE_J_VT = "{IEEE} Transactions on Vehicular Technology"} + + + +circuits, signals, systems, audio and controls +@STRING{IEEE_J_STSP = "{IEEE} Journal of Selected Topics in Signal Processing"} +@STRING{IEEE_J_SPL = "{IEEE} Signal Processing Letters"} +@STRING{IEEE_J_SYST = "{IEEE} Systems Journal"} +@STRING{IEEE_J_ASSP = "{IEEE} Transactions on Acoustics, Speech, and Signal Processing"} +@STRING{IEEE_J_AU = "{IEEE} Transactions on Audio"} +@STRING{IEEE_J_AUEA = "{IEEE} Transactions on Audio and Electroacoustics"} +in 2014 ASL became ASLP +@STRING{IEEE_J_ASLP = "{IEEE/ACM} Transactions on Audio, Speech, and Language Processing"} +@STRING{IEEE_J_ASL = "{IEEE} Transactions on Audio, Speech, and Language Processing"} +@STRING{IEEE_J_AC = "{IEEE} Transactions on Automatic Control"} +@STRING{IEEE_J_CAS = "{IEEE} Transactions on Circuits and Systems"} +@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_ETCAS = "{IEEE} Transactions on Emerging and Selected Topics in Circuits and Systems"} +@STRING{IEEE_J_SP = "{IEEE} Transactions on Signal Processing"} +@STRING{IEEE_J_SU = "{IEEE} Transactions on Sonics and Ultrasonics"} +@STRING{IEEE_J_SAP = "{IEEE} Transactions on Speech and Audio Processing"} +@STRING{IEEE_J_UE = "{IEEE} Transactions on Ultrasonics Engineering"} +@STRING{IEEE_J_UFFC = "{IEEE} Transactions on Ultrasonics, Ferroelectrics, and Frequency Control"} + + + +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"} +@STRING{IEEE_J_COMT = "{IEEE} Transactions on Communication Technology"} +@STRING{IEEE_J_WCOM = "{IEEE} Transactions on Wireless Communications"} +@STRING{IEEE_J_WCOML = "{IEEE} Wireless Communications Letters"} + + + +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"} +in 2011 CAPT became CPMT +@STRING{IEEE_J_CPMT = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology"} +@STRING{IEEE_J_CPMTA = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {A}"} +@STRING{IEEE_J_CPMTB = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {B}: Advanced Packaging"} +@STRING{IEEE_J_CPMTC = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {C}: Manufacturing"} +@STRING{IEEE_J_CAPTS = "{IEEE} Transactions on Components and Packaging Technologies"} +@STRING{IEEE_J_CAPT = "{IEEE} Transactions on Components and Packaging Technology"} +@STRING{IEEE_J_CPART = "{IEEE} Transactions on Component Parts"} +@STRING{IEEE_J_EPM = "{IEEE} Transactions on Electronics Packaging Manufacturing"} +@STRING{IEEE_J_MFT = "{IEEE} Transactions on Manufacturing Technology"} +@STRING{IEEE_J_PHP = "{IEEE} Transactions on Parts, Hybrids and Packaging"} +@STRING{IEEE_J_PMP = "{IEEE} Transactions on Parts, Materials and Packaging"} + + + +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 +@STRING{IEEE_J_BD = "{IEEE} Transactions on Big Data"} +@STRING{IEEE_J_IFS = "{IEEE} Transactions on Information Forensics and Security"} +@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 +@STRING{IEEE_J_CAL = "{IEEE} Computer Architecture Letters"} +@STRING{IEEE_J_ES = "{IEEE} Embedded Systems Letters"} +@STRING{IEEE_J_IOT = "{IEEE} Internet of Things Journal"} +@STRING{IEEE_J_XCDC = "{IEEE} Journal on Exploratory Solid-State Computational Devices and Circuits"} +@STRING{IEEE_J_MMCT = "{IEEE} Journal on Multiscale and Multiphysics Computational Techniques"} +@STRING{IEEE_J_SUSC = "{IEEE} Sustainable Computing"} +@STRING{IEEE_J_CC = "{IEEE} Transactions on Cloud Computing"} +@STRING{IEEE_J_CSS = "{IEEE} Transactions on Computational Social Systems"} +@STRING{IEEE_J_C = "{IEEE} Transactions on Computers"} +@STRING{IEEE_J_CNS = "{IEEE} Transactions on Control of Network Systems"} +@STRING{IEEE_J_DSC = "{IEEE} Transactions on Dependable and Secure Computing"} +@STRING{IEEE_J_ECOMP = "{IEEE} Transactions on Electronic Computers"} +@STRING{IEEE_J_ETC = "{IEEE} Transactions on Emerging Topics in Computing"} +@STRING{IEEE_J_EVC = "{IEEE} Transactions on Evolutionary Computation"} +@STRING{IEEE_J_FUZZ = "{IEEE} Transactions on Fuzzy Systems"} +@STRING{IEEE_J_MC = "{IEEE} Transactions on Mobile Computing"} +@STRING{IEEE_J_MSCS = "{IEEE} Transactions on Multi-Scale Computing Systems"} +@STRING{IEEE_J_NET = "{IEEE/ACM} Transactions on Networking"} +@STRING{IEEE_J_NSE = "{IEEE} Transactions on Network Science and Engineering"} +@STRING{IEEE_J_NSM = "{IEEE} Transactions on Network and Service Management"} +@STRING{IEEE_J_NN = "{IEEE} Transactions on Neural Networks"} +in 2012 NN became NNLS +@STRING{IEEE_J_NNLS = "{IEEE} Transactions on Neural Networks and Learning Systems"} +@STRING{IEEE_J_PDS = "{IEEE} Transactions on Parallel and Distributed Systems"} +@STRING{IEEE_J_SC = "{IEEE} Transactions on Services Computing"} +@STRING{IEEE_J_SIPN = "{IEEE} Transactions on Signal and Information Processing over Networks"} +@STRING{IEEE_J_SE = "{IEEE} Transactions on Software Engineering"} + + + +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, artificial intelligence and automation +@STRING{IEEE_J_JAS = "{IEEE/CAA} Journal of Automatica Sinica"} +@STRING{IEEE_J_JRA = "{IEEE} Journal of Robotics and Automation"} +@STRING{IEEE_J_AFFC = "{IEEE} Transactions on Affective Computing"} +@STRING{IEEE_J_ASE = "{IEEE} Transactions on Automation Science and Engineering"} +@STRING{IEEE_J_AMD = "{IEEE} Transactions on Autonomous Mental Development"} +@STRING{IEEE_J_CCN = "{IEEE} Transactions on Cognitive Communications and Networking"} +in 2015 AMD became CDS +@STRING{IEEE_J_CDS = "{IEEE} Transactions on Cognitive and Developmental Systems"} +@STRING{IEEE_J_CIAIG = "{IEEE} Transactions on Computational Intelligence and {AI} in Games"} +in 2013 SMCB became CYB +@STRING{IEEE_J_CYB = "{IEEE} Transactions on Cybernetics"} +@STRING{IEEE_J_H = "{IEEE} Transactions on Haptics"} +@STRING{IEEE_J_HFE = "{IEEE} Transactions on Human Factors in Electronics"} +in 2013 SMCC became HMS +@STRING{IEEE_J_HMS = "{IEEE} Transactions on Human-Machine Systems"} +@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_RAL = "{IEEE} Robotics and Automation Letters"} +@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"} +@STRING{IEEE_J_SMCC = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {C}: Applications and Reviews"} +in 2012 SMCA became SMCS +@STRING{IEEE_J_SMCS = "{IEEE} Transactions on Systems, Man, and Cybernetics: Systems"} +@STRING{IEEE_J_SSC = "{IEEE} Transactions on Systems Science and Cybernetics"} + + + +earth, wind, fire and water +@STRING{IEEE_J_GRSL = "{IEEE} Geoscience and Remote Sensing Letters"} +@STRING{IEEE_J_GE = "{IEEE} Transactions on Geoscience Electronics"} +@STRING{IEEE_J_GRS = "{IEEE} Transactions on Geoscience and Remote Sensing"} +@STRING{IEEE_J_OE = "{IEEE} Journal of Oceanic Engineering"} +@STRING{IEEE_J_STARS = "{IEEE} Journal of Selected Topics in Applied Earth Observations and Remote Sensing"} + + + +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_RITA = "{IEEE} Revista Iberoamericana de Technolog{\'{i}}as del Aprendizaje"} +@STRING{IEEE_J_EDU = "{IEEE} Transactions on Education"} +@STRING{IEEE_J_EM = "{IEEE} Transactions on Engineering Management"} +@STRING{IEEE_J_EWS = "{IEEE} Transactions on Engineering Writing and Speech"} +@STRING{IEEE_J_LT = "{IEEE} Transactions on Learning Technologies"} +@STRING{IEEE_J_PC = "{IEEE} Transactions on Professional Communication"} + + + +electromagnetics, antennas, EMI, magnetics and microwave +@STRING{IEEE_J_AWPL = "{IEEE} Antennas and Wireless Propagation Letters"} +@STRING{IEEE_J_MAGL = "{IEEE} Magnetics Letters"} +@STRING{IEEE_J_MGWL = "{IEEE} Microwave and Guided Wave Letters"} +@STRING{IEEE_J_MWCL = "{IEEE} Microwave and Wireless Components Letters"} +@STRING{IEEE_J_RFIC = "{IEEE} {RFIC} Journal"} +@STRING{IEEE_J_RFID = "{IEEE} {RFID} Journal"} +@STRING{IEEE_J_AP = "{IEEE} Transactions on Antennas and Propagation"} +@STRING{IEEE_J_EMC = "{IEEE} Transactions on Electromagnetic Compatibility"} +@STRING{IEEE_J_MAG = "{IEEE} Transactions on Magnetics"} +@STRING{IEEE_J_MTT = "{IEEE} Transactions on Microwave Theory and Techniques"} +@STRING{IEEE_J_RFI = "{IEEE} Transactions on Radio Frequency Interference"} +@STRING{IEEE_J_TTHZ = "{IEEE} Transactions on Terahertz Science and Technology"} +@STRING{IEEE_J_TJMJ = "{IEEE} Translation Journal on Magnetics in Japan"} + + + +energy, power and conversion +@STRING{IEEE_J_PHOT = "{IEEE} Journal of Photovoltaics"} +@STRING{IEEE_J_PEL = "{IEEE} Power Electronics Letters"} +@STRING{IEEE_J_PETS = "{IEEE} Power and Energy Technology Systems Journal"} +@STRING{IEEE_J_ESTPE = "{IEEE} Transactions on Emerging and Selected Topics in Power Electronics"} +@STRING{IEEE_J_EC = "{IEEE} Transactions on Energy Conversion"} +@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"} +@STRING{IEEE_J_PWRS = "{IEEE} Transactions on Power Systems"} +@STRING{IEEE_J_SG = "{IEEE} Transactions on Smart Grid"} +@STRING{IEEE_J_STE = "{IEEE} Transactions on Sustainable Energy"} + + + +industrial, commercial and consumer +@STRING{IEEE_J_PSE = "{IEEE} Journal of Product Safety Engineering"} +@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"} +@STRING{IEEE_J_CE = "{IEEE} Transactions on Consumer Electronics"} +@STRING{IEEE_J_IE = "{IEEE} Transactions on Industrial Electronics"} +@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"} + + + +instrumentation and measurement +@STRING{IEEE_J_IM = "{IEEE} Transactions on Instrumentation and Measurement"} + + + +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 +@STRING{IEEE_J_MEMS = "{IEEE/ASME} Journal of Microelectromechanical Systems"} +in 2014 MEMS became MEMSI +@STRING{IEEE_J_MEMSI = "{IEEE} Journal of Microelectromechanical Systems"} +@STRING{IEEE_J_MECH = "{IEEE/ASME} Transactions on Mechatronics"} + + + +medical and biological +@STRING{IEEE_J_BHI = "{IEEE} Journal of Biomedical and Health Informatics"} +@STRING{IEEE_J_TEHM = "{IEEE} Journal of Translational Engineering in Health and Medicine"} +@STRING{IEEE_J_LS = "{IEEE} Life Sciences Letters"} +@STRING{IEEE_J_RBME = "{IEEE} Reviews in Biomedical Engineering"} +@STRING{IEEE_J_BCAS = "{IEEE} Transactions on Biomedical Circuits and Systems"} +@STRING{IEEE_J_BMELC = "{IEEE} Transactions on Bio-Medical Electronics"} +B-ME later dropped the hyphen and became the BME +@STRING{IEEE_J_BME = "{IEEE} Transactions on Biomedical Engineering"} +@STRING{IEEE_J_B-ME = "{IEEE} Transactions on Bio-Medical Engineering"} +@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_MBSC = "{IEEE} Transactions on Molecular, Biological and Multi-Scale Communications"} +@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 +@STRING{IEEE_J_JLT = "{IEEE/OSA} Journal of Lightwave Technology"} +@STRING{IEEE_J_OCN = "{IEEE} Journal of Optical Communications and Networking"} +@STRING{IEEE_J_PJ = "{IEEE} Photonics Journal"} +@STRING{IEEE_J_PTL = "{IEEE} Photonics Technology Letters"} + + + +physics, electrons, nanotechnology, nuclear and quantum electronics +@STRING{IEEE_J_EDL = "{IEEE} Electron Device Letters"} +@STRING{IEEE_J_EDS = "{IEEE} Journal of Electron Devices Society"} +@STRING{IEEE_J_JQE = "{IEEE} Journal of Quantum Electronics"} +@STRING{IEEE_J_JSTQE = "{IEEE} Journal of Selected Topics in Quantum Electronics"} +@STRING{IEEE_J_ENANO = "{IEEE} Nanotechnology Express"} +@STRING{IEEE_J_ED = "{IEEE} Transactions on Electron Devices"} +@STRING{IEEE_J_NANO = "{IEEE} Transactions on Nanotechnology"} +@STRING{IEEE_J_NS = "{IEEE} Transactions on Nuclear Science"} +@STRING{IEEE_J_PS = "{IEEE} Transactions on Plasma Science"} + + + +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 +@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"} +@STRING{IEEE_J_SM = "{IEEE} Transactions on Semiconductor Manufacturing"} + + + +sensors +@STRING{IEEE_J_SENSOR = "{IEEE} Sensors Journal"} + + + +VLSI +@STRING{IEEE_J_VLSI = "{IEEE} Transactions on Very Large Scale Integration ({VLSI}) Systems"} + + + + + + +IEEE Magazines and Online Publications + + +@STRING{IEEE_O_ACC = "{IEEE} Access"} +@STRING{IEEE_M_AES = "{IEEE} Aerospace and Electronics Systems Magazine"} +@STRING{IEEE_M_HIST = "{IEEE} Annals of the History of Computing"} +@STRING{IEEE_M_AP = "{IEEE} Antennas and Propagation Magazine"} +@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Magazine"} +@STRING{IEEE_M_CHINAC = "China Communications Magazine"} +@STRING{IEEE_M_CD = "{IEEE} Circuits and Devices Magazine"} +@STRING{IEEE_M_CAS = "{IEEE} Circuits and Systems Magazine"} +@STRING{IEEE_M_COM = "{IEEE} Communications Magazine"} +@STRING{IEEE_M_COMSOC = "{IEEE} Communications Society Magazine"} +@STRING{IEEE_O_CSTO = "{IEEE} Communications Surveys and Tutorials"} +@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 = "Computer"} +@STRING{IEEE_M_CAP = "{IEEE} Computer Applications in Power"} +@STRING{IEEE_M_CGA = "{IEEE} Computer Graphics and Applications"} +@STRING{IEEE_M_CONC = "{IEEE} Concurrency"} +@STRING{IEEE_M_CS = "{IEEE} Control Systems Magazine"} +in 2012 DTC became DT +@STRING{IEEE_M_DT = "{IEEE} Design \&\ Test"} +@STRING{IEEE_M_DTC = "{IEEE} Design and Test of Computers"} +@STRING{IEEE_O_DSO = "{IEEE} Distributed Systems Online"} +@STRING{IEEE_M_EI = "{IEEE} Electrical Insulation Magazine"} +@STRING{IEEE_M_ETF = "{IEEE} Electrification Magazine"} +@STRING{IEEE_M_EMC = "{IEEE} Electromagnetic Compatibility Magazine"} +@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnology Review"} +@STRING{IEEE_M_EMR = "{IEEE} Engineering Management Review"} +@STRING{IEEE_M_EMB = "{IEEE} Engineering in Medicine and Biology Magazine"} +@STRING{IEEE_M_EXP = "{IEEE} Expert"} +@STRING{IEEE_M_GRS = "{IEEE} Geoscience and Remote Sensing Magazine"} +@STRING{IEEE_M_IA = "{IEEE} Industry Applications Magazine"} +@STRING{IEEE_M_IE = "{IEEE} Industrial Electronics Magazine"} +@STRING{IEEE_M_IM = "{IEEE} Instrumentation and Measurement Magazine"} +@STRING{IEEE_M_IS = "{IEEE} Intelligent Systems"} +@STRING{IEEE_M_ITS = "{IEEE} Intelligent Transportation Systems Magazine"} +@STRING{IEEE_M_IC = "{IEEE} Internet Computing"} +@STRING{IEEE_M_ITP = "{IEEE} {IT} Professional"} +@STRING{IEEE_M_MICRO = "{IEEE} Micro"} +@STRING{IEEE_M_MW = "{IEEE} Microwave Magazine"} +@STRING{IEEE_M_MM = "{IEEE} Multimedia"} +@STRING{IEEE_M_NANO = "{IEEE} Nanotechnology Magazine"} +@STRING{IEEE_M_NET = "{IEEE} Network"} +@STRING{IEEE_M_PCOM = "{IEEE} Personal Communications Magazine"} +@STRING{IEEE_M_PVC = "{IEEE} Pervasive Computing"} +@STRING{IEEE_M_POT = "{IEEE} Potentials"} +@STRING{IEEE_M_PEL = "{IEEE} Power Electronics Magazine"} +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_PULSE = "{IEEE} Pulse"} +@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_SSC = "{IEEE} Solid-State Circuits Magazine"} +@STRING{IEEE_M_SPECT = "{IEEE} Spectrum"} +@STRING{IEEE_M_SMC = "{IEEE} Systems, Man, and Cybernetics Magazine"} +@STRING{IEEE_M_TS = "{IEEE} Technology and Society Magazine"} +@STRING{IEEE_M_VT = "{IEEE} Vehicular Technology Magazine"} +@STRING{IEEE_M_WC = "{IEEE} Wireless Communications"} +@STRING{IEEE_M_TODAY = "Today's Engineer"} + + + + + +-- +EOF diff --git a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst deleted file mode 100644 index f9c03d79f4f..00000000000 --- a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst +++ /dev/null @@ -1,2409 +0,0 @@ -%% -%% IEEEtran.bst -%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted) -%% Version 1.14 (2015/08/26) -%% -%% Copyright (c) 2003-2015 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) -%% -%% Support sites: -%% http://www.michaelshell.org/tex/ieeetran/ -%% http://www.ctan.org/pkg/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! -%% User assumes all risk. -%% In no event shall the 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. ** -%%************************************************************************* - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% 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 display of urls -% #1 enables -FUNCTION {default.is.use.url} { #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. The 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.14" } -FUNCTION{bst.file.date} { "2015/08/26" } -FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } - -FUNCTION {banner.message} -{ is.print.banners.to.terminal - { "-- IEEEtran.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$ - } - { 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, the 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_url - 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 } - - - - -%%%%%%%%%%%%%%%%%%%%%%% -%% 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.use.url - 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.use.url 'is.use.url := - 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 -% the IEEE's rather unusual bibliography style. For example, the 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$ -} - - -% The IEEE separates large numbers with more than 4 digits into groups of -% three. The 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 -% two least significant digits determine the ordinal form. -FUNCTION {num.to.ordinal} -{ duplicate$ #-2 #1 substring$ "1" = - { bbl.th * } - { 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$ -} - -% 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$ - 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 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@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: IEEEtran.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 - { is.use.url - { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ } - { skip$ } - if$ - } - { skip$ } - if$ -} - -FUNCTION {if.url.std.interword.spacing} -{ is.use.alt.interword.spacing - { is.use.url - { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ } - { skip$ } - if$ - } - { skip$ } - if$ -} - - - - -%%%%%%%%%%%%%%%%%%%%%%%% -%% LONGEST LABEL PASS %% -%%%%%%%%%%%%%%%%%%%%%%%% - -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #1 'number.label := - #0 'longest.label.width := -} - -FUNCTION {longest.label.pass} -{ 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$ - } - 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: The 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$ -} - -% The 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} -{ is.use.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$ - } - { "" } - if$ -} - - - - -%%%%%%%%%%%%%%%%%%%% -%% ENTRY HANDLERS %% -%%%%%%%%%%%%%%%%%%%% - - -% Note: In many journals, the 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_url - empty$ - { skip$ } - { CTLuse_url - yes.no.to.int - 'is.use.url := - } - 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} - -EXECUTE {initialize.longest.label} -ITERATE {longest.label.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/IEEEtranN.bst b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranN.bst deleted file mode 100644 index 7204eafcdcc..00000000000 --- a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranN.bst +++ /dev/null @@ -1,2735 +0,0 @@ -%% -%% IEEEtranN.bst -%% BibTeX Bibliography Style file -%% Natbib version of IEEEtran.bst -%% *** Not for normal IEEE work *** -%% Version 1.14 (2015/08/26) -%% -%% Copyright (c) 2003-2015 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/pkg/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 the 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. ** -%%************************************************************************* - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% 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 display of urls -% #1 enables -FUNCTION {default.is.use.url} { #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. The 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.14" } -FUNCTION{bst.file.date} { "2015/08/26" } -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.the}{ "The" } -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, the 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_url - 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.use.url - 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.use.url 'is.use.url := - 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 -% the IEEE's rather unusual bibliography style. For example, the 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$ -} - - -% The IEEE separates large numbers with more than 4 digits into groups of -% three. The 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 -% two least significant digits determine the ordinal form. -FUNCTION {num.to.ordinal} -{ duplicate$ #-2 #1 substring$ "1" = - { bbl.th * } - { 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$ -} - -% 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" = - { " " bbl.etal * * } - { " " bbl.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 - { is.use.url - { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ } - { skip$ } - if$ - } - { skip$ } - if$ -} - -FUNCTION {if.url.std.interword.spacing} -{ is.use.alt.interword.spacing - { is.use.url - { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ } - { skip$ } - 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: The 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$ -} - -% The 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} -{ is.use.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$ - } - { "" } - if$ -} - - - - -%%%%%%%%%%%%%%%%%%%% -%% ENTRY HANDLERS %% -%%%%%%%%%%%%%%%%%%%% - - -% Note: In many journals, the 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_url - empty$ - { skip$ } - { CTLuse_url - yes.no.to.int - 'is.use.url := - } - 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$ " " bbl.etal * * } - { #2 < - 'skip$ - { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { " " bbl.etal * * } - { " " bbl.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$ } - { bbl.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$ } - { bbl.the " " * #4 institution chop.word #3 text.prefix$ } - if$ - } - { bbl.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$ } - { bbl.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 deleted file mode 100644 index b9c2c649f2d..00000000000 --- a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranS.bst +++ /dev/null @@ -1,2607 +0,0 @@ -%% -%% IEEEtranS.bst -%% BibTeX Bibliography Style file -%% Sorting version of IEEEtran.bst -%% *** Not for normal IEEE work *** -%% Version 1.14 (2015/08/26) -%% -%% Copyright (c) 2003-2015 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. -%% -%% Support sites: -%% http://www.michaelshell.org/tex/ieeetran/ -%% http://www.ctan.org/pkg/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! -%% User assumes all risk. -%% In no event shall the 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. ** -%%************************************************************************* - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% 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 display of urls -% #1 enables -FUNCTION {default.is.use.url} { #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. The 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.14" } -FUNCTION{bst.file.date} { "2015/08/26" } -FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } - -FUNCTION {banner.message} -{ is.print.banners.to.terminal - { "-- IEEEtranS.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 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.a}{ "A" } -FUNCTION {bbl.an}{ "An" } -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.the}{ "The" } -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, the 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_url - 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 } - - - - -%%%%%%%%%%%%%%%%%%%%%%% -%% 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.use.url - 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.use.url 'is.use.url := - 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 -% the IEEE's rather unusual bibliography style. For example, the 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$ -} - - -% The IEEE separates large numbers with more than 4 digits into groups of -% three. The 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 -% two least significant digits determine the ordinal form. -FUNCTION {num.to.ordinal} -{ duplicate$ #-2 #1 substring$ "1" = - { bbl.th * } - { 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$ -} - -% 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$ - 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 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@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: IEEEtranS.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 - { is.use.url - { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ } - { skip$ } - if$ - } - { skip$ } - if$ -} - -FUNCTION {if.url.std.interword.spacing} -{ is.use.alt.interword.spacing - { is.use.url - { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ } - { skip$ } - if$ - } - { skip$ } - if$ -} - - - - -%%%%%%%%%%%%%%%%%%%%%%%% -%% LONGEST LABEL PASS %% -%%%%%%%%%%%%%%%%%%%%%%%% - -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #1 'number.label := - #0 'longest.label.width := -} - -FUNCTION {longest.label.pass} -{ 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$ - } - 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: The 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$ -} - -% The 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} -{ is.use.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$ - } - { "" } - if$ -} - - - - -%%%%%%%%%%%%%%%%%%%% -%% ENTRY HANDLERS %% -%%%%%%%%%%%%%%%%%%%% - - -% Note: In many journals, the 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_url - empty$ - { skip$ } - { CTLuse_url - yes.no.to.int - 'is.use.url := - } - 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 := - bbl.a " " * #2 - bbl.an " " * #3 - bbl.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$ - } - { bbl.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$ - } - { bbl.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$ - } - { bbl.the " " * #4 institution chop.word sortify } - if$ - } - { bbl.the " " * #4 organization chop.word sortify } - if$ - } - { author sort.format.names } - if$ -} - - -FUNCTION {presort} -{ type$ "ieeetranbstctl" = - { key empty$ - { "_" } - { key sortify } - if$ - } - { 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$ := -} - -ITERATE {presort} - -SORT - -% END sort code based on that of plain.bst - - - -EXECUTE {initialize.longest.label} -ITERATE {longest.label.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/IEEEtranSA.bst b/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSA.bst deleted file mode 100644 index 9918a69bc86..00000000000 --- a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSA.bst +++ /dev/null @@ -1,2806 +0,0 @@ -%% -%% IEEEtranSA.bst -%% BibTeX Bibliography Style file -%% Sorting alpha version of IEEEtran.bst -%% *** Not for normal IEEE work *** -%% Version 1.14 (2015/08/26) -%% -%% Copyright (c) 2003-2015 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/pkg/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 the 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. ** -%%************************************************************************* - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% 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 display of urls -% #1 enables -FUNCTION {default.is.use.url} { #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. The 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.14" } -FUNCTION{bst.file.date} { "2015/08/26" } -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.a}{ "A" } -FUNCTION {bbl.an}{ "An" } -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.the}{ "The" } -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, the 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_url - 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.use.url - 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.use.url 'is.use.url := - 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 -% the IEEE's rather unusual bibliography style. For example, the 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$ -} - - -% The IEEE separates large numbers with more than 4 digits into groups of -% three. The 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 -% two least significant digits determine the ordinal form. -FUNCTION {num.to.ordinal} -{ duplicate$ #-2 #1 substring$ "1" = - { bbl.th * } - { 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$ -} - -% 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 - { is.use.url - { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ } - { skip$ } - if$ - } - { skip$ } - if$ -} - -FUNCTION {if.url.std.interword.spacing} -{ is.use.alt.interword.spacing - { is.use.url - { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ } - { skip$ } - 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: The 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$ -} - -% The 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} -{ is.use.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$ - } - { "" } - if$ -} - - - - -%%%%%%%%%%%%%%%%%%%% -%% ENTRY HANDLERS %% -%%%%%%%%%%%%%%%%%%%% - - -% Note: In many journals, the 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_url - empty$ - { skip$ } - { CTLuse_url - yes.no.to.int - 'is.use.url := - } - 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 := - bbl.a " " * #2 - bbl.an " " * #3 - bbl.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$ - } - { bbl.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$ - } - { bbl.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$ - } - { bbl.the " " * #4 institution chop.word sortify } - if$ - } - { bbl.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$ } - { bbl.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$ } - { bbl.the " " * #4 institution chop.word #3 text.prefix$ } - if$ - } - { bbl.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$ } - { bbl.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 deleted file mode 100644 index da43e61aa18..00000000000 --- a/Master/texmf-dist/bibtex/bst/IEEEtran/IEEEtranSN.bst +++ /dev/null @@ -1,2878 +0,0 @@ -%% -%% IEEEtranSN.bst -%% BibTeX Bibliography Style file -%% Sorting Natbib version of IEEEtran.bst -%% *** Not for normal IEEE work *** -%% Version 1.14 (2015/08/26) -%% -%% Copyright (c) 2003-2015 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/pkg/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 the 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. ** -%%************************************************************************* - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% 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 display of urls -% #1 enables -FUNCTION {default.is.use.url} { #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. The 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.14" } -FUNCTION{bst.file.date} { "2015/08/26" } -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.a}{ "A" } -FUNCTION {bbl.an}{ "An" } -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.the}{ "The" } -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, the 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_url - 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.use.url - 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.use.url 'is.use.url := - 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 -% the IEEE's rather unusual bibliography style. For example, the 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$ -} - - -% The IEEE separates large numbers with more than 4 digits into groups of -% three. The 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 -% two least significant digits determine the ordinal form. -FUNCTION {num.to.ordinal} -{ duplicate$ #-2 #1 substring$ "1" = - { bbl.th * } - { 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$ -} - -% 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" = - { " " bbl.etal * * } - { " " bbl.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 - { is.use.url - { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ } - { skip$ } - if$ - } - { skip$ } - if$ -} - -FUNCTION {if.url.std.interword.spacing} -{ is.use.alt.interword.spacing - { is.use.url - { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ } - { skip$ } - 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: The 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$ -} - -% The 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} -{ is.use.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$ - } - { "" } - if$ -} - - - - -%%%%%%%%%%%%%%%%%%%% -%% ENTRY HANDLERS %% -%%%%%%%%%%%%%%%%%%%% - - -% Note: In many journals, the 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_url - empty$ - { skip$ } - { CTLuse_url - yes.no.to.int - 'is.use.url := - } - 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 := - bbl.a " " * #2 - bbl.an " " * #3 - bbl.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$ - } - { bbl.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$ - } - { bbl.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$ - } - { bbl.the " " * #4 institution chop.word sortify } - if$ - } - { bbl.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$ " " bbl.etal * * } - { #2 < - 'skip$ - { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { " " bbl.etal * * } - { " " bbl.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$ } - { bbl.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$ } - { bbl.the " " * #4 institution chop.word #3 text.prefix$ } - if$ - } - { bbl.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$ } - { bbl.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. diff --git a/Master/texmf-dist/bibtex/bst/ieeetran/IEEEtran.bst b/Master/texmf-dist/bibtex/bst/ieeetran/IEEEtran.bst new file mode 100644 index 00000000000..f9c03d79f4f --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/ieeetran/IEEEtran.bst @@ -0,0 +1,2409 @@ +%% +%% IEEEtran.bst +%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted) +%% Version 1.14 (2015/08/26) +%% +%% Copyright (c) 2003-2015 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) +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/pkg/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! +%% User assumes all risk. +%% In no event shall the 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. ** +%%************************************************************************* + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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 display of urls +% #1 enables +FUNCTION {default.is.use.url} { #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. The 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.14" } +FUNCTION{bst.file.date} { "2015/08/26" } +FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtran.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$ + } + { 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, the 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_url + 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 } + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% 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.use.url + 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.use.url 'is.use.url := + 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 +% the IEEE's rather unusual bibliography style. For example, the 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$ +} + + +% The IEEE separates large numbers with more than 4 digits into groups of +% three. The 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 +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { 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$ +} + +% 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$ + 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 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@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: IEEEtran.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 + { is.use.url + { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ } + { skip$ } + if$ + } + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + { is.use.url + { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ } + { skip$ } + if$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%% +%% LONGEST LABEL PASS %% +%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ 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$ + } + 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: The 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$ +} + +% The 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} +{ is.use.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$ + } + { "" } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, the 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_url + empty$ + { skip$ } + { CTLuse_url + yes.no.to.int + 'is.use.url := + } + 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} + +EXECUTE {initialize.longest.label} +ITERATE {longest.label.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/IEEEtranN.bst b/Master/texmf-dist/bibtex/bst/ieeetran/IEEEtranN.bst new file mode 100644 index 00000000000..7204eafcdcc --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/ieeetran/IEEEtranN.bst @@ -0,0 +1,2735 @@ +%% +%% IEEEtranN.bst +%% BibTeX Bibliography Style file +%% Natbib version of IEEEtran.bst +%% *** Not for normal IEEE work *** +%% Version 1.14 (2015/08/26) +%% +%% Copyright (c) 2003-2015 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/pkg/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 the 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. ** +%%************************************************************************* + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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 display of urls +% #1 enables +FUNCTION {default.is.use.url} { #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. The 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.14" } +FUNCTION{bst.file.date} { "2015/08/26" } +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.the}{ "The" } +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, the 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_url + 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.use.url + 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.use.url 'is.use.url := + 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 +% the IEEE's rather unusual bibliography style. For example, the 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$ +} + + +% The IEEE separates large numbers with more than 4 digits into groups of +% three. The 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 +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { 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$ +} + +% 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" = + { " " bbl.etal * * } + { " " bbl.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 + { is.use.url + { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ } + { skip$ } + if$ + } + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + { is.use.url + { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ } + { skip$ } + 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: The 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$ +} + +% The 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} +{ is.use.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$ + } + { "" } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, the 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_url + empty$ + { skip$ } + { CTLuse_url + yes.no.to.int + 'is.use.url := + } + 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$ " " bbl.etal * * } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " " bbl.etal * * } + { " " bbl.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$ } + { bbl.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$ } + { bbl.the " " * #4 institution chop.word #3 text.prefix$ } + if$ + } + { bbl.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$ } + { bbl.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 new file mode 100644 index 00000000000..b9c2c649f2d --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/ieeetran/IEEEtranS.bst @@ -0,0 +1,2607 @@ +%% +%% IEEEtranS.bst +%% BibTeX Bibliography Style file +%% Sorting version of IEEEtran.bst +%% *** Not for normal IEEE work *** +%% Version 1.14 (2015/08/26) +%% +%% Copyright (c) 2003-2015 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. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/pkg/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! +%% User assumes all risk. +%% In no event shall the 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. ** +%%************************************************************************* + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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 display of urls +% #1 enables +FUNCTION {default.is.use.url} { #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. The 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.14" } +FUNCTION{bst.file.date} { "2015/08/26" } +FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtranS.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 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.a}{ "A" } +FUNCTION {bbl.an}{ "An" } +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.the}{ "The" } +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, the 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_url + 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 } + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% 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.use.url + 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.use.url 'is.use.url := + 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 +% the IEEE's rather unusual bibliography style. For example, the 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$ +} + + +% The IEEE separates large numbers with more than 4 digits into groups of +% three. The 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 +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { 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$ +} + +% 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$ + 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 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@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: IEEEtranS.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 + { is.use.url + { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ } + { skip$ } + if$ + } + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + { is.use.url + { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ } + { skip$ } + if$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%% +%% LONGEST LABEL PASS %% +%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ 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$ + } + 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: The 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$ +} + +% The 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} +{ is.use.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$ + } + { "" } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, the 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_url + empty$ + { skip$ } + { CTLuse_url + yes.no.to.int + 'is.use.url := + } + 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 := + bbl.a " " * #2 + bbl.an " " * #3 + bbl.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$ + } + { bbl.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$ + } + { bbl.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$ + } + { bbl.the " " * #4 institution chop.word sortify } + if$ + } + { bbl.the " " * #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + + +FUNCTION {presort} +{ type$ "ieeetranbstctl" = + { key empty$ + { "_" } + { key sortify } + if$ + } + { 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$ := +} + +ITERATE {presort} + +SORT + +% END sort code based on that of plain.bst + + + +EXECUTE {initialize.longest.label} +ITERATE {longest.label.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/IEEEtranSA.bst b/Master/texmf-dist/bibtex/bst/ieeetran/IEEEtranSA.bst new file mode 100644 index 00000000000..9918a69bc86 --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/ieeetran/IEEEtranSA.bst @@ -0,0 +1,2806 @@ +%% +%% IEEEtranSA.bst +%% BibTeX Bibliography Style file +%% Sorting alpha version of IEEEtran.bst +%% *** Not for normal IEEE work *** +%% Version 1.14 (2015/08/26) +%% +%% Copyright (c) 2003-2015 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/pkg/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 the 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. ** +%%************************************************************************* + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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 display of urls +% #1 enables +FUNCTION {default.is.use.url} { #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. The 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.14" } +FUNCTION{bst.file.date} { "2015/08/26" } +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.a}{ "A" } +FUNCTION {bbl.an}{ "An" } +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.the}{ "The" } +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, the 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_url + 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.use.url + 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.use.url 'is.use.url := + 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 +% the IEEE's rather unusual bibliography style. For example, the 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$ +} + + +% The IEEE separates large numbers with more than 4 digits into groups of +% three. The 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 +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { 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$ +} + +% 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 + { is.use.url + { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ } + { skip$ } + if$ + } + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + { is.use.url + { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ } + { skip$ } + 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: The 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$ +} + +% The 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} +{ is.use.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$ + } + { "" } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, the 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_url + empty$ + { skip$ } + { CTLuse_url + yes.no.to.int + 'is.use.url := + } + 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 := + bbl.a " " * #2 + bbl.an " " * #3 + bbl.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$ + } + { bbl.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$ + } + { bbl.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$ + } + { bbl.the " " * #4 institution chop.word sortify } + if$ + } + { bbl.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$ } + { bbl.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$ } + { bbl.the " " * #4 institution chop.word #3 text.prefix$ } + if$ + } + { bbl.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$ } + { bbl.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..da43e61aa18 --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/ieeetran/IEEEtranSN.bst @@ -0,0 +1,2878 @@ +%% +%% IEEEtranSN.bst +%% BibTeX Bibliography Style file +%% Sorting Natbib version of IEEEtran.bst +%% *** Not for normal IEEE work *** +%% Version 1.14 (2015/08/26) +%% +%% Copyright (c) 2003-2015 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/pkg/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 the 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. ** +%%************************************************************************* + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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 display of urls +% #1 enables +FUNCTION {default.is.use.url} { #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. The 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.14" } +FUNCTION{bst.file.date} { "2015/08/26" } +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.a}{ "A" } +FUNCTION {bbl.an}{ "An" } +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.the}{ "The" } +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, the 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_url + 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.use.url + 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.use.url 'is.use.url := + 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 +% the IEEE's rather unusual bibliography style. For example, the 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$ +} + + +% The IEEE separates large numbers with more than 4 digits into groups of +% three. The 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 +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { 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$ +} + +% 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" = + { " " bbl.etal * * } + { " " bbl.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 + { is.use.url + { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ } + { skip$ } + if$ + } + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + { is.use.url + { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ } + { skip$ } + 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: The 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$ +} + +% The 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} +{ is.use.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$ + } + { "" } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, the 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_url + empty$ + { skip$ } + { CTLuse_url + yes.no.to.int + 'is.use.url := + } + 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 := + bbl.a " " * #2 + bbl.an " " * #3 + bbl.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$ + } + { bbl.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$ + } + { bbl.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$ + } + { bbl.the " " * #4 institution chop.word sortify } + if$ + } + { bbl.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$ " " bbl.etal * * } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " " bbl.etal * * } + { " " bbl.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$ } + { bbl.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$ } + { bbl.the " " * #4 institution chop.word #3 text.prefix$ } + if$ + } + { bbl.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$ } + { bbl.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