使用latex导出IEEE文献格式
- 创建一个
tex
文件,内容如下
\documentclass[a4paper,10pt]{article}\begin{document}\cite{chen2018fastgcn}.\bibliographystyle{IEEEtran}\bibliography{sampleBibFile}
\end{document}
- 创建一个
IEEEtran.bst
文件,表示IEEE格式,内容如下
%%
%% 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{ addressassigneeauthorbooktitlechapterdaydayfilededitioneditorhowpublishedinstitutionintypejournalkeylanguagemonthmonthfilednationalitynotenumberorganizationpagespaperpublisherschoolseriesrevisiontitletypeurlvolumeyearyearfiledCTLuse_article_numberCTLuse_paperCTLuse_urlCTLuse_forced_etalCTLmax_names_forced_etalCTLnames_show_etalCTLuse_alt_spacingCTLalt_stretch_factorCTLdash_repeated_namesCTLname_format_stringCTLname_latex_cmdCTLname_url_prefix}{}{ label }%%%%%%%%%%%%%%%%%%%%%%%
%% INTEGER VARIABLES %%
%%%%%%%%%%%%%%%%%%%%%%%INTEGERS { prev.status.punct this.status.punct punct.stdpunct.no punct.comma punct.period prev.status.space this.status.space space.stdspace.no space.normal space.largeprev.status.quote this.status.quote quote.stdquote.no quote.closeprev.status.nline this.status.nline nline.stdnline.no nline.newblock status.cap cap.stdcap.no cap.yes}INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }INTEGERS { is.use.number.for.articleis.use.paperis.use.urlis.forced.et.almax.num.names.before.forced.et.alnum.names.shown.with.forced.et.alis.use.alt.interword.spacingis.dash.repeated.names}%%%%%%%%%%%%%%%%%%%%%%
%% STRING VARIABLES %%
%%%%%%%%%%%%%%%%%%%%%%STRINGS { bibinfolongest.labeloldnamestALTinterwordstretchfactorname.format.stringname.latex.cmdname.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$ < notswap$ "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.nonnullif$
}FUNCTION {output.warn}
{ 't :=duplicate$ empty${ pop$ "empty " t * " in " * cite$ * warning$ }'output.nonnullif$
}% "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 nott empty$ notand}{ 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.cmdempty${ 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 InterfacesFUNCTION {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.numnum.to.ordinal}{ word.to.numduplicate$ #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$ andyear empty$ and month empty$ and{ skip$ }{ this.to.prev.statusthis.status.stdcap.status.stdaddress "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.statusthis.status.std's :="" 't :=#1 'nameptr :=s num.names$ 'numnames :=numnames 'namesleft :={ namesleft #0 > }{ s nameptrname.format.stringformat.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.andspace.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/locationsFUNCTION {format.address}
{ address duplicate$ empty$ 'skip${ this.to.prev.statusthis.status.stdcap.status.std}if$
}%% author/editor namesFUNCTION {format.authors}{ author "author" format.names }FUNCTION {format.editors}
{ editor "editor" format.names duplicate$ empty$ 'skip${ ", " *get.bbl.editorcapitalize*}if$
}%% dateFUNCTION {format.date}
{month "month" bibinfo.check duplicate$ empty$year "year" bibinfo.check duplicate$ empty${ swap$ 'skip${ this.to.prev.statusthis.status.stdcap.status.std"there's a month but no year in " cite$ * warning$ }if$*}{ this.to.prev.statusthis.status.stdcap.status.stdswap$ '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.statuspunct.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.statuspunct.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.statusthis.status.stdconvert.editionstatus.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.statusthis.status.stdselect.languageintype missing${ emphasizebbl.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.statusthis.status.stdselect.languageemphasizeedition empty$ 'skip${ ", " *editionconvert.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.statusthis.status.std"t" change.case$}if$"title" bibinfo.checkduplicate$ 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.statusthis.status.stdcap.status.std"t" change.case$ }if$"title" bibinfo.checkduplicate$ empty$ { skip$ } { select.language }if$
}FUNCTION {format.book.title.edition}
{ title "title" bibinfo.checkduplicate$ empty${ "empty title in " cite$ * warning$ }{ this.to.prev.statusthis.status.stdselect.languageemphasizeedition empty$ 'skip${ ", " *editionconvert.editionstatus.cap{ "t" }{ "l" }if$change.case$* "~" * bbl.edition *}if$cap.status.std}if$
}FUNCTION {format.book.title}
{ title "title" bibinfo.checkduplicate$ empty$ 'skip${ this.to.prev.statusthis.status.stdcap.status.stdselect.languageemphasize}if$
}%% journalFUNCTION {format.journal}
{ journal duplicate$ empty$ 'skip${ this.to.prev.statusthis.status.stdcap.status.stdselect.languageemphasize}if$
}%% how publishedFUNCTION {format.howpublished}
{ howpublished duplicate$ empty$ 'skip${ this.to.prev.statusthis.status.stdcap.status.std}if$
}%% institutions/organization/publishers/schoolFUNCTION {format.institution}
{ institution duplicate$ empty$ 'skip${ this.to.prev.statusthis.status.stdcap.status.std}if$
}FUNCTION {format.organization}
{ organization duplicate$ empty$ 'skip${ this.to.prev.statusthis.status.stdcap.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.statusthis.status.stdcap.status.std}if$
}%% volume/number/series/chapter/pagesFUNCTION {format.volume}
{ volume empty.field.to.null.stringduplicate$ empty$ 'skip${ this.to.prev.statusthis.status.stdbbl.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.stringduplicate$ empty$ 'skip${ this.to.prev.statusthis.status.stdstatus.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.statusthis.status.stdbbl.series " " *series "series" bibinfo.check *cap.status.std}if$
}FUNCTION {format.chapter}
{ chapter empty${ "" }{ this.to.prev.statusthis.status.stdtype 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.statusthis.status.stdtype "type" bibinfo.checkcap.status.std}if$}{ this.to.prev.statusthis.status.stdtype 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.statusthis.status.stdduplicate$ 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 numberFUNCTION {format.tech.report.number}
{ number "number" bibinfo.checkthis.to.prev.statusthis.status.stdcap.status.stdtype duplicate$ empty${ pop$ bbl.techrep}{ skip$ }if$"type" bibinfo.check swap$ duplicate$ empty${ pop$ }{ tie.or.space.prefix * * }if$
}%% noteFUNCTION {format.note}
{ note empty${ "" }{ this.to.prev.statusthis.status.stdpunct.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.checkcap.yes 'status.cap :=}if$
}%% patentFUNCTION {format.patent.date}
{ this.to.prev.statusthis.status.stdyear 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.statusthis.status.stdnationality duplicate$ empty${ "nationality" bibinfo.warn pop$ "" }{ "nationality" bibinfo.checkduplicate$ "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.checklarge.number.separateswap$ " " * swap$ *}if$ cap.status.std
}%% standardFUNCTION {format.organization.institution.standard.type.number}
{ this.to.prev.statusthis.status.stdorganization 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.checklarge.number.separateswap$ " " * swap$ *}if$ cap.status.std
}FUNCTION {format.revision}
{ revision empty${ "" }{ this.to.prev.statusthis.status.stdbbl.revisionrevision tie.or.space.prefix"revision" bibinfo.check* *cap.status.std}if$
}%% thesisFUNCTION {format.master.thesis.type}
{ this.to.prev.statusthis.status.stdtype empty${bbl.mthesis}{ type "type" bibinfo.check}if$
cap.status.std
}FUNCTION {format.phd.thesis.type}
{ this.to.prev.statusthis.status.stdtype empty${bbl.phdthesis}{ type "type" bibinfo.check}if$
cap.status.std
}%% URLFUNCTION {format.url}
{ is.use.url{ url empty${ "" }{ this.to.prev.statusthis.status.stdcap.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.commastart.entryif.url.alt.interword.spacingformat.authors "author" output.warnname.or.dashformat.article.title "title" output.warnformat.journal "journal" bibinfo.check "journal" output.warnformat.volume outputformat.number.if.use.for.article outputformat.pages outputformat.date "year" output.warnformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {book}
{ std.status.using.commastart.entryif.url.alt.interword.spacingauthor empty${ format.editors "author and editor" output.warn }{ format.authors output.nonnull }if$name.or.dashformat.book.title.edition outputformat.series outputauthor empty${ skip$ }{ format.editors output }if$format.address.publisher.date outputformat.volume outputformat.number outputformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {booklet}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors outputname.or.dashformat.article.title "title" output.warnformat.howpublished "howpublished" bibinfo.check outputformat.organization "organization" bibinfo.check outputformat.address "address" bibinfo.check outputformat.date outputformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {electronic}
{ std.status.using.periodstart.entryif.url.alt.interword.spacingformat.authors outputname.or.dashformat.date.electronic outputformat.article.title.electronic outputformat.howpublished "howpublished" bibinfo.check outputformat.organization "organization" bibinfo.check outputformat.address "address" bibinfo.check outputformat.note outputformat.url outputfin.entryempty.entry.warnif.url.std.interword.spacing
}FUNCTION {inbook}
{ std.status.using.commastart.entryif.url.alt.interword.spacingauthor empty${ format.editors "author and editor" output.warn }{ format.authors output.nonnull }if$name.or.dashformat.book.title.edition outputformat.series outputformat.address.publisher.date outputformat.volume outputformat.number outputformat.chapter outputformat.pages outputformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {incollection}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors "author" output.warnname.or.dashformat.article.title "title" output.warnformat.in.booktitle.edition "booktitle" output.warnformat.series outputformat.editors outputformat.address.publisher.date.nowarn outputformat.volume outputformat.number outputformat.chapter outputformat.pages outputformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {inproceedings}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors "author" output.warnname.or.dashformat.article.title "title" output.warnformat.in.booktitle "booktitle" output.warnformat.series outputformat.editors outputformat.volume outputformat.number outputpublisher empty${ format.address.organization.date output }{ format.organization "organization" bibinfo.check outputformat.address.publisher.date output}if$format.paper outputformat.pages outputformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {manual}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors outputname.or.dashformat.book.title.edition "title" output.warnformat.howpublished "howpublished" bibinfo.check output format.organization "organization" bibinfo.check outputformat.address "address" bibinfo.check outputformat.date outputformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {mastersthesis}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors "author" output.warnname.or.dashformat.article.title "title" output.warnformat.master.thesis.type output.nonnullformat.school "school" bibinfo.warn outputformat.address "address" bibinfo.check outputformat.date "year" output.warnformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {misc}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors outputname.or.dashformat.article.title outputformat.howpublished "howpublished" bibinfo.check output format.organization "organization" bibinfo.check outputformat.address "address" bibinfo.check outputformat.pages outputformat.date outputformat.note outputformat.url outputfin.entryempty.entry.warnif.url.std.interword.spacing
}FUNCTION {patent}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors outputname.or.dashformat.article.title outputformat.patent.nationality.type.number outputformat.patent.date outputformat.note outputformat.url outputfin.entryempty.entry.warnif.url.std.interword.spacing
}FUNCTION {periodical}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.editors outputname.or.dashformat.book.title "title" output.warnformat.series outputformat.volume outputformat.number outputformat.organization "organization" bibinfo.check outputformat.date "year" output.warnformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {phdthesis}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors "author" output.warnname.or.dashformat.article.title "title" output.warnformat.phd.thesis.type output.nonnullformat.school "school" bibinfo.warn outputformat.address "address" bibinfo.check outputformat.date "year" output.warnformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {proceedings}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.editors outputname.or.dashformat.book.title "title" output.warnformat.series outputformat.volume outputformat.number outputpublisher empty${ format.address.organization.date output }{ format.organization "organization" bibinfo.check outputformat.address.publisher.date output}if$format.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {standard}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors outputname.or.dashformat.book.title "title" output.warnformat.howpublished "howpublished" bibinfo.check output format.organization.institution.standard.type.number outputformat.revision outputformat.date outputformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {techreport}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors "author" output.warnname.or.dashformat.article.title "title" output.warnformat.howpublished "howpublished" bibinfo.check output format.institution "institution" bibinfo.warn outputformat.address "address" bibinfo.check outputformat.tech.report.number output.nonnullformat.date "year" output.warnformat.note outputformat.url outputfin.entryif.url.std.interword.spacing
}FUNCTION {unpublished}
{ std.status.using.commastart.entryif.url.alt.interword.spacingformat.authors "author" output.warnname.or.dashformat.article.title "title" output.warnformat.date outputformat.note "note" output.warnformat.url outputfin.entryif.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_numberempty${ skip$ }{ CTLuse_article_numberyes.no.to.int'is.use.number.for.article :=}if$CTLuse_paperempty${ skip$ }{ CTLuse_paperyes.no.to.int'is.use.paper :=}if$CTLuse_urlempty${ skip$ }{ CTLuse_urlyes.no.to.int'is.use.url :=}if$CTLuse_forced_etalempty${ skip$ }{ CTLuse_forced_etalyes.no.to.int'is.forced.et.al :=}if$CTLmax_names_forced_etalempty${ skip$ }{ CTLmax_names_forced_etalstring.to.integer'max.num.names.before.forced.et.al :=}if$CTLnames_show_etalempty${ skip$ }{ CTLnames_show_etalstring.to.integer'num.names.shown.with.forced.et.al :=}if$CTLuse_alt_spacingempty${ skip$ }{ CTLuse_alt_spacingyes.no.to.int'is.use.alt.interword.spacing :=}if$CTLalt_stretch_factorempty${ skip$ }{ CTLalt_stretch_factor'ALTinterwordstretchfactor :="\renewcommand{\BIBentryALTinterwordstretchfactor}{"ALTinterwordstretchfactor * "}" *write$ newline$}if$CTLdash_repeated_namesempty${ skip$ }{ CTLdash_repeated_namesyes.no.to.int'is.dash.repeated.names :=}if$CTLname_format_stringempty${ skip$ }{ CTLname_format_string'name.format.string :=}if$CTLname_latex_cmdempty${ skip$ }{ CTLname_latex_cmd'name.latex.cmd :=}if$CTLname_url_prefixmissing${ 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 %%
%%%%%%%%%%%%%%%%%%READEXECUTE {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.
- 创建一个
sampleBibFile.bib
文件,用来放BibTeX
,例如
@article{chen2018fastgcn,title={Fastgcn: fast learning with graph convolutional networks via importance sampling},author={Chen, Jie and Ma, Tengfei and Xiao, Cao},journal={arXiv preprint arXiv:1801.10247},year={2018}
}
- 编译
tex
文件,生成的pdf可得到IEEE格式的参考文献
使用latex导出IEEE文献格式相关推荐
- 如何将SmartDraw中的图形导出LATEX可用的EPS格式?
如何将SmartDraw中的图形导出LATEX可用的EPS格式? 下面介绍两种可行的方法,自己弄了一下午总结出来的经验,希望能帮到遇到问题的朋友: 1. 用smartdraw画图,用save as 存 ...
- 将 EndNote 文献信息导出成 BibTeX 格式(可根据label排序)以及出现三个问号
文章:将 EndNote 文献信息导出成 BibTeX 格式 - 知乎 介绍的很详细 BibTeX Export using EN Label Field下载地址: https://endnote.c ...
- 使用IEEE的LaTex模板进行论文格式修改初体验
在上个月匆匆赶了一篇会议,结果因为工作内容不够,老板不让投,当时使用的是word模板进行的论文撰写,这个月中心要举办会议,老板没办法只能让我先把这篇文章投了,但是需要根据LaTeX的格式完成,这个周五 ...
- 用latex写IEEE论文投稿的踩坑笔记
目录 预备. 安装TeXstudio 一. 下载IEEE的LaTeX模板 二. 修改引文方式 1.更新IEEEtran.bst文件 2.新建一个.txt文件,把bib格式的引文信息全都复制进去(方法如 ...
- Latex编辑IEEE论文入门问题集锦
Latex编辑IEEE论文入门问题集锦 1. 前言 2.图片插入 2.1 图片转换为eps格式 2.2 latex中插入eps 2.3 作者简介IEEEbiography图片 2. 字体 3.1 不显 ...
- LaTeX编写Elsevier论文格式-小白记录
LaTeX编写Elsevier论文格式 一.准备工作 1. windows安装TeX Live 2. 安装TeX Studio 3. Elsevier模板下载 二.编写 1. word版本内容迁移到L ...
- Web of Science(WOS)导出参考文献的格式缩略词说明
绪论 使用Web of Science查找文献很方便,平台功能也很丰富,不过让我纳闷的是,它似乎没有导出一篇论文作为被引用的参考文献时的格式的功能. e.g. 我需要引用这篇论文: Sprinkler ...
- 中国知网html如何复制,中国知网如何快速导出参考文献的格式? 来看看吧
写论文时,需要很多引文及注释,就需要把参考文献标注上.按照参考文献的引文格式一点一点整理很麻烦,涉及大量文献时费时费力.中国知网有快速导出参考文献格式的功能,可单个导出,也可以大量导出,方便实用. 工 ...
- IEEE文献免费下载方法
第一种方法:SCI-Hub SCI-Hub网址 随便选择上图红色框框内的一个链接即可,然后会进入下面界面: 然后把需要下载的文献的DOI输入到上图红框里面,然后再点击open就可以加载出PDF格式的文 ...
最新文章
- MySQL索引类型一览 让MySQL高效运行起来
- PIX515防火墙配置策略实例
- python编程快速上手第四章_《Python编程快速上手——让繁琐的工作自动化》读书笔记 第四章 列表...
- POP-一个点击带有放大还原的动画效果
- C#是一种垂死的语言吗?
- 【iCore4 双核心板_uC/OS-II】例程十:信号量集
- ATSC数字电视标准 1
- 前端知识:使用layui模板搭建页面,简单快捷
- Scala和Kotlin脚本编程
- python在mac模拟鼠标点击_如何使用Python在Mac中控制鼠标?
- 阿里巴巴有哪些好玩的分布式开源框架?
- 对《Mode-Adaptive Neural Networks for Quadruped Motion Control》一文的理解(上)
- java泡妞代码_java泡妞小程序
- 港科夜闻|香港科技大学(广州)倪明选校长一行到访广东省科学技术厅,与龚国平厅长、吴世文副厅长参加交流座谈会议...
- FP、FN、TP、FN解释
- 【身份证识别】基于形态学实现ID号码识别系统matlab源码含GUI
- (8)打鸡儿教你Vue.js
- 移动硬盘恢复数据多少钱?恢复几率有多大?
- 微信怎么查看历史头像
- Anaconda安装以及pytorch cpu版本安装配置