From 8eb3cb996976c8874dedd431eff91e282056439b Mon Sep 17 00:00:00 2001 From: Thomas Trautner Date: Wed, 11 Sep 2019 10:41:39 +0200 Subject: [PATCH] add IEEE biblography style --- .gitignore | 4 + bib/IEEEtran.bst | 2409 ++++++++++++++++++++++++++++++++++++++++++++++ bib/intro.bib | 10 + lib/header.tex | 5 - thesis.pdf | Bin 109524 -> 114955 bytes thesis.tex | 16 +- 6 files changed, 2431 insertions(+), 13 deletions(-) create mode 100644 bib/IEEEtran.bst create mode 100644 bib/intro.bib diff --git a/.gitignore b/.gitignore index fddead8..4b41951 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,10 @@ *.aux +*.bbl *.bcf +*.blg +*.lof *.log +*.lot *.out *.xml *.gz diff --git a/bib/IEEEtran.bst b/bib/IEEEtran.bst new file mode 100644 index 0000000..f9c03d7 --- /dev/null +++ b/bib/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/bib/intro.bib b/bib/intro.bib new file mode 100644 index 0000000..03b24fd --- /dev/null +++ b/bib/intro.bib @@ -0,0 +1,10 @@ +@article{Ayatollahi2018, + author = {Ayatollahi, Iman and Brier, Jens and Mörzinger, Benjamin and Heger, Michael and Bleicher, Friedrich}, + year = {2018}, + month = {01}, + pages = {162-166}, + title = {SOA on Smart Manufacturing Utilities for Identification, Data Access and Control}, + volume = {67}, + journal = {Procedia CIRP}, + doi = {10.1016/j.procir.2017.12.193} +} \ No newline at end of file diff --git a/lib/header.tex b/lib/header.tex index 6b4b32c..71d64ad 100644 --- a/lib/header.tex +++ b/lib/header.tex @@ -48,11 +48,6 @@ \usepackage[bottom]{footmisc} % Zwingt Fußnoten an das Ende der Seite -\usepackage[ % Biblatex für die Zitate und Referenzen - backend=biber, - hyperref=true - ]{biblatex} - \usepackage{caption} \usepackage{subcaption} % Einbinden von mehreren Grafiken in einer figure diff --git a/thesis.pdf b/thesis.pdf index 266a8aa522a7f58562353f31bbbf54558c0b23f5..37433c5d0f5064870855f1e2d6328b158282af13 100644 GIT binary patch delta 21957 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 diff --git a/thesis.tex b/thesis.tex index 24f85fb..b383cbf 100644 --- a/thesis.tex +++ b/thesis.tex @@ -18,14 +18,14 @@ \createTitleIFT \chapter*{Danksagung} -\par\noindent Text (max. 1 Seite)\par +\todo{Text (max. 1 Seite)} \par\noindent optional \chapter*{Kurzfassung} -Text (max. 1 Seite) +\todo{Text (max. 1 Seite)} \chapter*{Abstract} -\par\noindent Text (max. 1 Seite) +\todo{Text (max. 1 Seite)} \par\noindent Englischsprachige Kurzfassung \tableofcontents @@ -46,14 +46,14 @@ Text (max. 1 Seite) \chapter{Zusammenfassung und Ausblick} -\chapter*{Literaturverzeichnis} +\cite{Ayatollahi2018} -\chapter*{Abbildungsverzeichnis} -\chapter*{Tabellenverzeichnis} +\bibliographystyle{bib/IEEEtran} +\bibliography{bib/intro} +\listoffigures +\listoftables \appendix -\chapter{Versuche} - \end{document} \ No newline at end of file -- GitLab