%% BUPTThesis.bst %% %% 北京邮电大学研究生学位论文参考文献 BibTeX 样式 %% %% 项目主页:http://code.google.com/p/buptthesis/ %% %% 本样式基于 IEEEtran 和 ThuThesis 修改而成,基本满足北京邮电大学研究生论文格式要求 %% %% 作者: %% 张煜 (email:dazzlezhang@gmail.com) %% %% 更新记录: %% $LastChangedBy$ %% $LastChangedDate$ %% $LastChangedRevision$ %% 一些设置的缺省值 % 英文姓名排版格式字符串, 按~<, Jr.>格式 FUNCTION {default.name.format.string} {"{vv~}{ll}{~ff}{, Jj}"} % 列出的最多作者数目, 即当作者数目超过下列数字时, 超出部分的作者姓名将略去 FUNCTION {default.max.num.names.before.forced.et.al} { #3 } % 是否为盲审版本, #0 表示盲审将隐去作者信息, #1 表示非盲审 FUNCTION {default.is.for.peer.review} { #0 } %%%%%%%%%%%%%% % 一些辅助函数 %%%%%%%%%%%%%% % #0 不在终端显示开始/完成的提示信息 % #1 显示提示信息 FUNCTION {is.print.banners.to.terminal} {#1} %%%%%%%%%%%%%%%% % 版本与提示信息 %%%%%%%%%%%%%%%% % 版本信息 FUNCTION{bst.file.version} { "0.2" } FUNCTION{bst.file.date} { "2009/01/25" } FUNCTION{bst.file.website} { "http://code.google.com/p/buptthesis/" } % 开始提示信息 FUNCTION {banner.message}{ is.print.banners.to.terminal { "-- BUPTThesis.bst version" " " * bst.file.version * " (" * bst.file.date * ") " * "by Yu Zhang." * top$ "-- " bst.file.website * top$ "-- See the " quote$ * "userguide.pdf" * quote$ * " manual for usage information." * top$ } { skip$ } if$ } % 完成提示信息 FUNCTION {completed.message} { is.print.banners.to.terminal { "" top$ "Done." top$ } { skip$ } if$ } %%%%%%%%%%%%%%%%%%% %% 预定义的字符串宏 %%%%%%%%%%%%%%%%%%% % 英文月份 MACRO {jan} {"January"} MACRO {feb} {"February"} MACRO {mar} {"March"} MACRO {apr} {"April"} MACRO {may} {"May"} MACRO {jun} {"June"} MACRO {jul} {"July"} MACRO {aug} {"August"} MACRO {sep} {"September"} MACRO {oct} {"October"} MACRO {nov} {"November"} MACRO {dec} {"December"} %%%%%%%%%%%% %% 条目定义 %%%%%%%%%%%% ENTRY { address % 地址 assignee % 标准授权人 author % 作者 booktitle % 专著/论文集名 chapter % day % dayfiled % edition % 版本 editor % 编者 howpublished % 出版形式 esubtype % 电子文献子类 institution % journal % 期刊 key % language % 语言 month % 月 monthfiled % nationality % newsletter % note % number % number2 % organization % pages % publisher % refdate % update % 电子文档更新或修改日期 school % series % title % translator % type % volume % volume2 % year % year2 % yearfiled % url % URL pubaddress % 出版地 CTLname_format_string % 作者英文姓名排版格式 CTLmax_names_forced_etal % 强制略去的最大作者数 CTLauthor_name_english % 作者英文姓名 CTLauthor_name_chinese % 作者中文姓名 CTLfor_peer_review % 是否匿名 } {} { label } %%%%%%%%%%%%% %% 字符串常量 %%%%%%%%%%%%% % FUNCTION {bbl.anonymous} { language empty$ { "Anon" } { "佚名" } if$ } FUNCTION {bbl.anonymous} { "" } FUNCTION {bbl.etal} { language empty$ { "~et~al" } { "~等" } if$ } FUNCTION {bbl.sine.loco} { language empty$ { "S.~l." } { "出版地不详" } if$ } FUNCTION {bbl.sine.nomine} { language empty$ { "s.~n." } { "出版者不详" } if$ } FUNCTION {bbl.comma} { language empty$ { ", " } { "," } if$ } FUNCTION {bbl.colon} { language empty$ { ": " } { ":" } if$ } FUNCTION {bbl.period} { language empty$ { "." } { "." } if$ } FUNCTION {bbl.parallel} { "~//~" } FUNCTION {bbl.st} { "st" } % 序数词后缀 FUNCTION {bbl.nd} { "nd" } % 序数词后缀 FUNCTION {bbl.rd} { "rd" } % 序数词后缀 FUNCTION {bbl.th} { "th" } % 序数词后缀 FUNCTION {bbl.number} { "第" } FUNCTION {bbl.author} { "作者" } %%%%%%%%%%%% %% 整型变量 %%%%%%%%%%% INTEGERS { output.state before.all mid.sentence after.title after.sentence url.sentence after.block before.pages } INTEGERS { number.label longest.label.width multiresult nameptr namesleft numnames lastnamecapitalized namelength charptr } INTEGERS { max.num.names.before.forced.et.al } INTEGERS { is.for.peer.review } %%%%%%%%%%%%% %% 字符串变量 %%%%%%%%%%%%% STRINGS { s t longest.label thename name.emph.author.en % 强调现实的作者英文姓名 name.emph.author.zh % 强调显示的作者中文姓名 name.format.string % 姓名的格式字符串 author.name.in.english % 作者英文姓名 author.name.in.chinese % 作者中文姓名 } %%%%%%%%%%%%%%%%%%%%% %% LaTeX 参考文献代码 %%%%%%%%%%%%%%%%%%%%% % 输出 .bbl 文件开始 FUNCTION {begin.bib} { "% Generated by BUPTThesis.bst, version: " bst.file.version * " (" * bst.file.date * ")" * write$ newline$ % 输出注释行,说明产生该bbl的bst及版本 preamble$ empty$ % 输出前导 'skip$ { preamble$ write$ newline$ } if$ "\begin{thebibliography}{" longest.label * "}" * write$ newline$ % 输出 \begin{thebiliography}{x} } % 输出 .bbl 文件结束部分 FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ } %%%%%%%%%%%% %% 底层函数 %%%%%%%%%%%% % 控制变量初始化 FUNCTION {initialize.controls} { default.name.format.string 'name.format.string := default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al := default.is.for.peer.review 'is.for.peer.review := } % 初始化最长 label FUNCTION {initialize.longest.label} { "" 'longest.label := #1 'number.label := #0 'longest.label.width := } % 最长 label pass FUNCTION {longest.label.pass} { number.label int.to.str$ 'label := number.label #1 + 'number.label := label width$ longest.label.width > { label 'longest.label := label width$ 'longest.label.width := } { skip$ } if$ } % 逻辑非: 栈顶元素的逻辑非 FUNCTION {not} { { #0 } { #1 } if$ } % 逻辑与 FUNCTION {and} { { skip$ } { pop$ #0 } if$ } % 逻辑或 FUNCTION {or} { { pop$ #1 } { skip$ } if$ } % 返回 #1 : 栈顶字符是数字"0"~"9" % 返回 #0 : 其他 FUNCTION {is.num} { chr.to.int$ duplicate$ "0" chr.to.int$ < not swap$ "9" chr.to.int$ > not and } % 栈顶整数乘以10 FUNCTION {bump.int.mag} { #0 'multiresult := % 初始化乘运算结果 y <- 0 { duplicate$ #0 > } % 栈顶整数 x = 0 时才停止循环 { #1 - % x <- x - 1 multiresult #10 + 'multiresult := % y <- y + 10 } while$ pop$ % 释放 x multiresult % y 压栈返回 } % 将栈顶字符("0"~"9")转换为整数(0~9) 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 % 如果栈定字符不是("0"~"9"), 给出警告返回 0 } if$ } % 将栈顶字符串转换为整数 FUNCTION {string.to.integer} { duplicate$ text.length$ 'namesleft := % namesleft <- 字符串长度 #1 'nameptr := % nameptr <- 1 #0 'numnames := % numnames <- 0 { nameptr namesleft > not } % while( ! ( nameptr > namesleft ) ) { duplicate$ nameptr #1 substring$ % 取第 nameptr 个字符 x char.to.integer numnames bump.int.mag + 'numnames := % numnames <- chr2int( x ) + 10 * numnames nameptr #1 + 'nameptr := % nameptr <- nameptr + 1 } while$ pop$ % 释放栈顶元素 numnames % numnames 压栈返回 } % 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$ } % 初始化状态常量 FUNCTION {initialize.status.constants} { #0 'before.all := % 起始 #1 'mid.sentence := % 句中 #2 'after.sentence := % 句末 #3 'after.block := % 块后 #4 'after.title := % #5 'before.pages := % } FUNCTION {remove.char} { 't := 's := "" { s empty$ not } { s #1 #1 substring$ s #2 global.max$ substring$ 's := duplicate$ t = 'pop$ { * } if$ } while$ } STRINGS {z} FUNCTION {remove.period} { 'z := "" { z empty$ not } { z #1 #1 substring$ z #2 global.max$ substring$ 'z := duplicate$ "." = 'pop$ { * } if$ } while$ } FUNCTION {remove.dots} { duplicate$ "input=" swap$ * warning$ "language=" language * warning$ language empty$ { "." remove.char duplicate$ "output('.')=" swap$ * warning$ } { "." remove.char duplicate$ "output('.')=" swap$ * warning$ "." remove.char duplicate$ "output('.')=" swap$ * warning$ } if$ } FUNCTION {bibinfo.check} { swap$ duplicate$ missing$ { pop$ pop$ "" } { duplicate$ empty$ { swap$ pop$ } { swap$ pop$ } if$ } if$ } %%%%%%%%%%%% %% 调试例程 %%%%%%%%%%%% % 默认调试输出函数 FUNCTION {debug.output} { "[DEBUG] " swap$ * top$ } % 状态调试输出函数 FUNCTION {debug.output.status} { "---- output.state=" output.state before.all = { "before.all" } { output.state mid.sentence = { "mid.sentence" } { output.state after.sentence = { "after.sentence" } { output.state url.sentence = { "url.sentence" } { output.state before.pages = { "before.pages" } { "after.block" } if$ } if$ } if$ } if$ } if$ * debug.output } FUNCTION {output.year} { 't := number empty$ volume empty$ and { add.period$ write$ } { ", " * write$ } if$ t } % STRINGS {z} % FUNCTION {remove.dots} % { 'z := % "" % { z empty$ not } % { z #1 #1 substring$ % z #2 global.max$ substring$ 'z := % duplicate$ bbl.period = 'pop$ % { * } % if$ % } % while$ % %z % } % 对于中文文献, 用全角句点替换英文句点 FUNCTION {replace.half.width.period} { % % DEBUG % duplicate$ "-- replace.half.width.period(" swap$ * ")" * debug.output % % END OF DEBUG language empty$ { " " * } % 对于英文文献, 在句点后加一空格 { duplicate$ text.length$ 'numnames := % numnames 等于字符串长度 % % DEBUG % numnames int.to.str$ "---- text.length$=" swap$ * debug.output % % END OF DEBUG duplicate$ numnames #1 substring$ "." = { % % DEBUG % "---- Found '.' at the end" debug.output % % END OF DEBUG numnames #1 - #1 swap$ substring$ bbl.period * } { skip$ } if$ } if$ % % DEBUG % duplicate$ "---- Return=" swap$ * debug.output % % END OF DEBUG } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 输出例程: 输出栈顶项并根据需要添加标点符号 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 非空项输出函数: 用于输出非空项 FUNCTION {output.nonnull} { % % DEBUG % duplicate$ "output.nonnull(" swap$ * ")" * debug.output % debug.output.status % % END OF DEBUG swap$ % 根据当前输出状态添加前置标点符号 % before.all 起始, 不添加任何标点符号直接输出 % mid.sentence 句中, 前置逗号输出 % after.sentence 句末, 前置句号输出 % after.block 块后, 前置句号, 后置 \newblock 输出 % after.title output.state mid.sentence = { bbl.comma * write$ } % mid.sentence 前置逗号 { output.state after.block = { add.period$ % 块后, 后置句号 replace.half.width.period % 为中文文献替换句点 write$ newline$ % "\newblock " write$ } % 后置 \newblock 输出 { output.state before.all = { write$ } % 起始, 不添加任何标点符号直接输出 { output.state after.title = { bbl.parallel * write$ } { output.state before.pages = { bbl.colon * write$ } { add.period$ % 句末, 前置句号输出 replace.half.width.period write$ } % if$ } if$ } if$ } if$ mid.sentence 'output.state := } if$ % s } % 无警告输出函数 FUNCTION {output} { duplicate$ empty$ { pop$ } % 若输出项为空, 则舍去空输出项 { output.nonnull } % 否则调用非空输出函数 if$ } % 警告输出函数: 同 output, 但是对于空项给出警告提示 FUNCTION {output.warn} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } { output.nonnull } if$ } % 将数字字符串转换成序数词形式字符串(例如: "7" -> "7th") FUNCTION {num.to.ordinal} { duplicate$ #-1 #1 substring$ "1" = { bbl.st * } { duplicate$ #-1 #1 substring$ "2" = { bbl.nd * } { duplicate$ #-1 #1 substring$ "3" = { bbl.rd * } { bbl.th * } if$ } if$ } if$ } % 从字符串中提取前导数字的函数 % 如果栈顶字符串以数字开头(例如: "11th"), 则将字符串用其数字部分(即,"11") % 替换. 否则, 保持原字符串不变. 用于版本转换函数(convert.edition) % s 保存提取出的数字, t 保存剩余待扫描的字符串. FUNCTION {extract.num} { duplicate$ 't := % t <- 输入字符串 "" 's := % s <- "" { t empty$ not } % while( t != "" ) { { t #1 #1 substring$ % tmp <- t[0] t #2 global.max$ substring$ 't := % t <- t[2:global.max$] duplicate$ is.num % if( is.num( tmp ) ) { s swap$ * 's := } % s <- s & tmp { pop$ "" 't := } % else t <- "" if$ % } } % while$ % if( s == "" ) s empty$ % ; 'skip$ % else { pop$ s } % return s if$ % } % 将1st~10th单词形式的序数词转换成阿拉伯数字形式 FUNCTION {word.to.num} { duplicate$ "l" change.case$ 's := % s <- lower( arg ) s "first" = % if ( s == "first" ) { pop$ "1" } % return "1" { skip$ } if$ s "second" = % if ( s == "second" ) { pop$ "2" } % return "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$ } % 转换字符串形式的序数词为数字形式的序数词 % 例如: 将 "Eleventh" 转换为 "11th" FUNCTION {convert.edition} { duplicate$ empty$ 'skip$ { duplicate$ #1 #1 substring$ is.num % if( is.num( arg[1] ) ) { { extract.num % tmp <- extract.num( arg ) num.to.ordinal % tmp <- num.to.ordinal( tmp ) } % } else { { word.to.num % tmp <- word.to.num( arg ) duplicate$ #1 #1 substring$ is.num % if( is.num( tmp[1] ) ) { num.to.ordinal } % tmp <- num.to.ordinal( tmp ) { "edition ordinal word " quote$ * edition * quote$ * " may be too high (or improper) for conversion" * " in " * cite$ * warning$ % else output warning } if$ } if$ } if$ } FUNCTION {start.entry} { newline$ "\bibitem{" write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {fin.entry} { add.period$ replace.half.width.period write$ newline$ } % FUNCTION {fin.entry} % { duplicate$ empty$ % 'pop$ % 'write$ % if$ % newline$ % } FUNCTION {new.block} { output.state before.all = 'skip$ { after.block 'output.state := } if$ } FUNCTION {new.sentence} { output.state after.block = 'skip$ { output.state before.all = 'skip$ { after.sentence 'output.state := } if$ } if$ } FUNCTION {new.block.checka} { empty$ 'skip$ 'new.block if$ } FUNCTION {new.block.checkb} { empty$ swap$ empty$ and 'skip$ 'new.block if$ } FUNCTION {new.sentence.checka} { empty$ 'skip$ 'new.sentence if$ } FUNCTION {new.sentence.checkb} { empty$ swap$ empty$ and 'skip$ 'new.sentence if$ } FUNCTION {field.or.null} { duplicate$ empty$ { pop$ "" } 'skip$ if$ } FUNCTION {emphasize} { duplicate$ empty$ { pop$ "" } { "{\em " swap$ * "}" * } if$ } FUNCTION {format.language} { language empty$ 'skip$ 'skip$ if$ } FUNCTION {is.space} { chr.to.int$ duplicate$ #32 = { pop$ #1 } { pop$ #0 } if$ } FUNCTION {is.lower.char} { chr.to.int$ duplicate$ #96 > { #123 < { #1 } { #0 } if$ } { pop$ #0 } if$ } % 将last name转换为全大写 FUNCTION {capitalize.last.name} { "u" change.case$ } % FUNCTION {capitalize.last.name} % { % 'thename := % 输入参数 thename % thename text.length$ % 'namelength := % namelength := thename 的长度 % #1 'charptr := % #0 'lastnamecapitalized := % "" % { charptr #1 - namelength < % % % debug % % duplicate$ int.to.str$ "( charptr + #1 > namelength ) == " swap$ * warning$ % % % eod % } % { % % % debug % % "charptr = " charptr int.to.str$ * % % ", lastnamecapitalized = " * % % lastnamecapitalized int.to.str$ * warning$ % % % eod % lastnamecapitalized #1 = % { thename charptr namelength charptr - #1 + substring$ * % namelength #1 + 'charptr := % % % debug % % duplicate$ "top of the stack = " swap$ * warning$ % % % eod % } % { thename charptr #1 substring$ % % % debug % % duplicate$ "the char = " swap$ * warning$ % % % eod % duplicate$ is.lower.char % % % debug % % duplicate$ int.to.str$ "is.lower.char = " swap$ * warning$ % % % eod % { "u" change.case$ * } % { duplicate$ is.space % % % debug % % duplicate$ int.to.str$ "is.space = " swap$ * warning$ % % % eod % { #1 'lastnamecapitalized := % * % } % { * % } % if$ % } % if$ % % % debug % % duplicate$ "top of the stack = " swap$ * warning$ % % % eod % charptr #1 + 'charptr := % } % if$ % } % while$ % } % 格式化盲审姓名 FUNCTION {format.names.for.peer.review} { 's := % s := author域 #1 'nameptr := % nameptr 是姓名指针,初始化为 1 s num.names$ 'numnames := % 利用 num.names$ 获得 s 中的作者数量存入 nameptr numnames 'namesleft := % 未处理的姓名数 namesleft := numnames % 循环处理所有姓名 { namesleft #0 > } % if namesleft > #0 (还有姓名没有格式化) { s nameptr % 选择第 nameptr 个姓名 name.format.string % 按 name.format.string 的格式排版 format.name$ % 调用 format.name$ remove.period % 并删除缩写符号'.' 't := % 格式化后的姓名暂存于 t language empty$ { author.name.in.english }% 如果是英文文献将 author.name.in.english 压栈 { author.name.in.chinese } % 否则将 author.name.in.chinese 压栈 if$ t = % 用当前的姓名与栈上的姓名做比较 { nameptr int.to.str$ % 将作者序号转化为字符串 "\CJKnumber{" swap$ * "}" * % 使用中文数字 bbl.number swap$ * bbl.author * % 加上``第''和``作者'' % duplicate$ debug.output } { skip$ } if$ nameptr #1 + 'nameptr := % 姓名指针加 1 namesleft #1 - 'namesleft := % 剩余姓名数减 1 } while$ } % 格式化非盲审姓名 FUNCTION {format.names.for.non.peer.review} { % 初始化 's := % s := author域 #1 'nameptr := % nameptr 是姓名指针,初始化为 1 s num.names$ 'numnames := % 利用 num.names$ 获得 s 中的作者数量存入 nameptr numnames 'namesleft := % 未处理的姓名数 namesleft := numnames % 循环处理所有姓名 { namesleft #0 > } % if namesleft > #0 (还有姓名没有格式化) { s nameptr % 选择第 nameptr 个姓名 name.format.string % 按 name.format.string 的格式排版 format.name$ % 调用 format.name$ % language empty$ % { "u" change.case$ } % 如果不是语言为空, 做大写转换 % { skip$ } % if$ % remove.period % 并删除缩写符号'.' 't := % 格式化后的姓名暂存于 t nameptr #1 > { nameptr max.num.names.before.forced.et.al #1 + = { "others" 't := % 如果当前作者的序数已经超出了最大列显作者数 #1 'namesleft := } % 则置未处理姓名数为#1, 以便跳出循环 { bbl.comma * } % 如果作者序数在允许范围内, 则添加逗号 if$ % namesleft #1 > % 若当前姓名不是最后一个 { t * } % 显示当前姓名 { t "others" = % 若当前姓名是最后一个且后面有略去的姓名 { bbl.etal * } % 添加", et~al"或",等" { t * } % 如果没有略去姓名,以句点结束 if$ % } if$ % } { t } % 如果是第一个作者, 直接将排版后的姓名压栈 if$ nameptr #1 + 'nameptr := % 姓名指针加 1 namesleft #1 - 'namesleft := % 剩余姓名数减 1 } while$ } % 格式化姓名 FUNCTION {format.names} { is.for.peer.review { format.names.for.peer.review } % 格式化盲审姓名 { format.names.for.non.peer.review } % 格式化非盲审姓名 if$ } FUNCTION {format.authors} { author empty$ { bbl.anonymous "The author in " cite$ * " is missing." * warning$ } { author format.names } if$ } FUNCTION {format.editors} { editor empty$ { bbl.anonymous "The editor in " cite$ * " is missing." * warning$ } { editor format.names } if$ } FUNCTION {format.assignees} { assignee empty$ { "" } { assignee format.names } if$ } % 译者格式 FUNCTION {format.translators} { translator empty$ { "" } % 无译者 { new.block % 有译者 translator format.names ",译" * } if$ } % 机构格式 FUNCTION {format.institution} { institution empty$ { "" } { institution } if$ } % 组织格式 FUNCTION {format.organization} { organization empty$ { "" } { organization } if$ } % 文献类型标志代码/电子文献载体标志代码 FUNCTION {bib.type.designator} { % % DEBUG % "bib.type.designator(type:" type$ * debug.output % " url: " url empty$ { "" }{ url } if$ * debug.output % % END OF DEBUG % 文献类型标志代码 type$ "book" = type$ "inbook" = or { "M" } { type$ "standard" = { "S" } { type$ "proceedings" = type$ "conference" = or type$ "inproceedings" = or { "C" } { type$ "patent" = { "P" } { type$ "phdthesis" = type$ "masterthesis" = or {language "Chinese" = { "学位论文" } { language empty$ = {"Dissertation"} if$} if$} { type$ "techreport" = { "R" } { type$ "article" = type$ "periodical" = or { "J" } { type$ "online" = type$ "webpage" = or type$ "www" = or { "EB" } { type$ "electronic" = { esubtype empty$ { url empty$ { "" } { "EB" } if$ } { esubtype "webpage" = { "EB" } { esubtype "database" = { "DB" } { esubtype "program" = { "CP" } { "" } if$ % electronics[program] } if$ % electronics[database] } if$ % electronics[webpage] } if$ } { "" } % 其他 if$ % electronics } if$ % online/webpage/www } if$ % article/periodical } if$ % techreport } if$ % phdthesis/mastersthesis } if$ % patent } if$ % proceedings/inproceedings/conference } if$ % standard } if$ % book/inbook % % DEBUG % duplicate$ " doc.designator: " swap$ * debug.output % % END OF DEBUG % 电子文献载体标志代码 duplicate$ "" = { skip$ } { "~[" swap$ * howpublished empty$ { url empty$ { "" } { "/OL" } if$ } { howpublished "online" = { "/OL" } { howpublished "magtype" = { "MT" } { howpublished "disk" = { "DK" } { howpublished "cdrom" = { "CD" } { "" } if$ % cdrom } if$ % disk } if$ % magitude type } if$ % online } if$ * "]" * } if$ } FUNCTION {format.title} { title empty$ { "" } { new.block title } if$ } % 格式化年月日``YYYY-MM-DD'' FUNCTION {format.year.month.day} { year empty$ { "YYYY" } { year } if$ "-" * month empty$ { "MM" * } { month text.length$ #2 < { "0" * } { skip$ } if$ month * } if$ "-" * day empty$ { "DD" * } { day text.length$ #2 < { "0" * } 'skip$ if$ day * } if$ } FUNCTION {format.reference.date} { refdate empty$ { "" url empty$ { skip$ } { "The refdate in " cite$ * " is missing." * warning$ } if$ } { output.state mid.sentence = { before.all 'output.state := } { skip$ } if$ "~[" refdate * "]" * } if$ } % patent的题名项: 专利题名: 专利国别, 专利号~[文献类型标志] FUNCTION {format.patent.title} { title empty$ % 专利提名 { "" } { new.block title bbl.colon * nationality empty$ % 专利国别, 专利号 { % 专利国别为必备项 "The nationality in " cite$ * " is missing." * warning$ } { number empty$ { % 专利号为必选项 "The number in " cite$ * " is missing." * warning$ } { % 产生``专利国别, 专利号'' nationality * bbl.comma * number * } if$ } if$ % 文献类型标志 bib.type.designator * } if$ } % patent的出版项: FUNCTION {format.patent.publication} { new.block format.year.month.day % % DEBUG % duplicate$ "End of format.patent.publication, top = " swap$ * debug.output % % END OF DEBUG url empty$ { skip$ } { refdate empty$ { "The refdate in " cite$ * " is missing." * warning$ } { "~[" * refdate * "]" * } if$ } if$ } % electronic的主要责任者: % author 或 organization FUNCTION {format.electronic.authors} { author empty$ { organization empty$ { " " } { organization } if$ } { format.authors } if$ } % electronic的出版项 FUNCTION {format.electronic.publication} { new.block % 出版地: 出版者 address empty$ { "" } { address publisher empty$ { skip$ } { bbl.colon * publisher * } if$ } if$ % 出版年 year empty$ { skip$ } { publisher empty$ { "" } { bbl.comma } if$ * year * } if$ } %% article的标题格式 FUNCTION {format.atitle} { title empty$ { "" } { title newsletter empty$ { "~[J" * } { newsletter "yes" = { "~[N" * } { "~[J" * } if$ } if$ url empty$ { "]" * } { "/OL]" * } if$ } if$ } %% incollection的标题格式 FUNCTION {format.ictitle} { title empty$ { "" } { title "~[M]~//~" * editor format.names * } if$ } %% inproceedings的标题格式 FUNCTION {format.iptitle} { title empty$ { "" } { title "~[C]~//~" * editor format.names * } if$ } FUNCTION {n.dashify} { '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$ } % 年,卷(期) FUNCTION {format.year.volume.number} { year empty$ { "" } { type$ "periodical" = { new.block } { mid.sentence 'output.state := } if$ year volume empty$ 'skip$ { bbl.comma * volume * } if$ number empty$ 'skip$ { "~(" * number * ")" * } if$ year2 empty$ { skip$ } { "~--" * year2 "now" = { skip$ } { year2 * volume2 empty$ { skip$ } { bbl.comma * volume2 * } if$ number2 empty$ 'skip$ { "~(" * number2 * ")" * } if$ } if$ } if$ } if$ % %% DEBUG % duplicate$ "format.year.volume.number=" swap$ * debug.output % %% END OF DEBUG } % 卷(期).年,月(for article only) FUNCTION {format.volume.number.year.month} { add.period$ year empty$ { "" } { volume empty$ 'skip$ { "~" * volume * } if$ number empty$ 'skip$ { "~(" * number * ")" * } if$ new.block year month empty$ 'skip$ { bbl.comma * month * } if$ } if$ } % FUNCTION {format.date} { year empty$ { month empty$ { "" } { "there's a month but no year in " cite$ * warning$ month } if$ } { month empty$ { year } { month bbl.comma * year * } if$ } if$ } function {format.year.year} { year empty$ 'skip$ { year "--" * year2 empty$ 'skip$ { year2 "now" = 'skip$ { year2 * } if$ } if$ } if$ } % 专著标题格式 FUNCTION {format.book.title} { new.block % 生成一个新的block title type$ "proceedings" = { address empty$ { skip$ } { bbl.comma * address * bbl.comma * month empty$ { skip$ } { month * } if$ year empty$ { skip$ } { year * } if$ } if$ } { skip$ } if$ bib.type.designator * % 标题 + [文献标志代码/电子文献载体标志代码] } % 科技报告标题格式 FUNCTION {format.techreport.title} { title empty$ { "" } { new.block % 生成一个新的block title % 标题 + number empty$ % 编号 + { "" } { bbl.comma * number } if$ * bib.type.designator * % [文献标志代码/电子文献载体标志代码] } if$ } % 连续出版物标题格式 FUNCTION {format.jtitle} { title "~[J" * url empty$ { "]" * } { "/OL]" * } if$ } % 论文集标题格式 FUNCTION {format.ptitle.volume} { title volume empty$ { "~[C]" } { bbl.colon volume * "~[C]" * } if$ * %emphasize } FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 < { "~" } { " " } if$ swap$ * * } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } FUNCTION {format.bvolume} { volume empty$ { "" } { language empty$ { "volume" volume tie.or.space.connect } { volume } if$ series empty$ 'skip$ { " of " * series emphasize * } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.number.series} { volume empty$ { number empty$ { series field.or.null } { output.state mid.sentence = { "number" } { "Number" } if$ number tie.or.space.connect series empty$ { "there's a number but no series in " cite$ * warning$ } { " in " * series * } if$ } if$ } { "" } if$ } % 版本项格式 FUNCTION {format.edition} { edition empty$ { "" } { new.block % 版本项按一个block输出 language empty$ % 英文文献版本号自动转换成数字形式的序数词 { edition convert.edition "l" change.case$ " ed" * } { edition } % 中文文献版本号直接输出 if$ } if$ } FUNCTION {format.url} { url empty$ { "" } { new.block "\url{" url * "}" * } if$ } FUNCTION {multi.page.check} { '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 {format.pages} { pages empty$ { "" } { before.pages 'output.state := pages multi.page.check { "" pages n.dashify tie.or.space.connect } { "" pages tie.or.space.connect } if$ } if$ } FUNCTION {format.vol.num.pages} { volume field.or.null number empty$ 'skip$ { "(" number * ")" * * volume empty$ { newsletter empty$ { "there's a number but no volume in " cite$ * warning$ } 'skip$ if$ } 'skip$ if$ } if$ pages empty$ 'skip$ { duplicate$ empty$ { pop$ format.pages } { bbl.colon * pages n.dashify * } if$ } if$ % duplicate$ "top of stack = " swap$ * warning$ url empty$ 'skip$ { refdate empty$ { "there's an url but no refdate in " cite$ * warning$ } { %duplicate$ "url and refdate is not empty, top of stack = " swap$ * warning$ "~[" * refdate * "]" * } if$ %duplicate$ "top of stack = " swap$ * warning$ } if$ } FUNCTION {format.chapter.pages} { chapter empty$ { "" } { type empty$ { "chapter" } { type "l" change.case$ } if$ chapter tie.or.space.connect pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } FUNCTION {format.in.booktitle} { booktitle empty$ { "" } { editor empty$ { language empty$ { " " booktitle * } % { "Proceedings of " booktitle * } { " " booktitle * } if$ } { language empty$ % { "In: " format.editors * ", Proceedings of " * booktitle * } { " " booktitle * } { " " booktitle * } if$ } if$ } if$ } FUNCTION {format.in.ed.booktitle.volume} { booktitle empty$ { "" } { editor empty$ { language empty$ % { "Proceedings of " booktitle * } { " " booktitle * } { " " booktitle * } if$ } { language empty$ %{ "In: " format.editors * ", Proceedings of " * booktitle * } { " " booktitle * } { " " booktitle * } if$ } if$ %% volume volume empty$ 'skip$ { language empty$ { "Vol." * volume * } { ":第" * volume * "卷" * } if$ } if$ } if$ } FUNCTION {empty.misc.check} { author empty$ title empty$ howpublished empty$ month empty$ year empty$ note empty$ and and and and and { "all relevant fields are empty in " cite$ * warning$ } 'skip$ if$ } FUNCTION {format.thesis.type} { type empty$ 'skip$ { pop$ type "t" change.case$ } if$ } FUNCTION {format.tr.number} { type empty$ { "Technical Report" } 'type if$ number empty$ { "t" change.case$ } { number tie.or.space.connect } if$ } FUNCTION {format.article.crossref} { key empty$ { journal empty$ { "need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } { "In {\em " journal * "\/}" * } if$ } { "In " key * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.crossref.editor} { editor #1 "{ll }{f{~}}" format.name$ editor num.names$ duplicate$ #2 > { pop$ " et~al." * } { #2 < 'skip$ { editor #2 "{ll }{f{~}}" format.name$ "others" = { " et~al." * } { " and " * editor #2 "{ll }{f{~}}" format.name$ * } if$ } if$ } if$ } FUNCTION {format.book.crossref} { volume empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ "In " } { "Volume" volume tie.or.space.connect " of " * } if$ editor empty$ editor field.or.null author field.or.null = or { key empty$ { series empty$ { "need editor, key, or series for " cite$ * " to crossref " * crossref * warning$ "" * } { "{\em " * series * "\/}" * } if$ } { key * } if$ } { format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} { editor empty$ editor field.or.null author field.or.null = or { key empty$ { booktitle empty$ { "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$ "" } { "In {\em " booktitle * "\/}" * } if$ } { "In " key * } if$ } { "In " format.crossref.editor * } if$ " \cite{" * crossref * "}" * } % 出版地: 出版者 FUNCTION {format.address.publisher} { new.block type$ "inproceedings" = { pubaddress empty$ { "[" bbl.sine.loco * "]" * bbl.colon * % 无出版地 publisher empty$ { "there's neither pubaddress nor publisher in " cite$ * warning$ "[" * bbl.sine.nomine * "]" * % 无出版者 } { "there's a publisher but no pubaddress in " cite$ * warning$ publisher * % 有出版者 } if$ } { pubaddress bbl.colon * % 有出版地 publisher empty$ { "there's a pubaddress but no publisher in " cite$ * warning$ "[" * bbl.sine.nomine * "]" * % 无出版者 } { publisher * } % 有出版者 if$ } if$ } { address empty$ { "[" bbl.sine.loco * "]" * bbl.colon * % 无出版地 publisher empty$ { "there's neither address nor publisher in " cite$ * warning$ "[" * bbl.sine.nomine * "]" * % 无出版者 } { "there's a publisher but no address in " cite$ * warning$ publisher * % 有出版者 } if$ } { address bbl.colon * % 有出版地 publisher empty$ { "there's a address but no publisher in " cite$ * warning$ "[" * bbl.sine.nomine * "]" * % 无出版者 } { publisher * } % 有出版者 if$ } if$ } if$ } % 出版地: 出版者, 出版年 FUNCTION {format.address.publisher.year} { % % DEBUG % "-- format.address.publisher.year(){" debug.output % "-- address =" address * debug.output % "-- publisher=" publisher * debug.output % "-- year =" year * debug.output % % END OF DEBUG new.block type$ "inproceedings" = { pubaddress empty$ { "" % "[" bbl.sine.loco * "]" * bbl.colon * % 无出版地 publisher empty$ { "there's neither pubaddress nor publisher in " cite$ * warning$ "" * % "[" * bbl.sine.nomine * "]" * % 无出版者 } { "there's a publisher but no pubaddress in " cite$ * warning$ publisher * % 有出版者 } if$ } { publisher empty$ { "there's a pubaddress but no publisher in " cite$ * warning$ "" % "[" * bbl.sine.nomine * "]" * % 无出版者 } { pubaddress bbl.colon * % 有出版地 publisher * } % 有出版者 if$ } if$ } { address empty$ { "" % "[" bbl.sine.loco * "]" * bbl.colon * % 无出版地 publisher empty$ { "there's neither address nor publisher in " cite$ * warning$ "" * % "[" * bbl.sine.nomine * "]" * % 无出版者 } { "there's a publisher but no address in " cite$ * warning$ publisher * % 有出版者 } if$ } { publisher empty$ { "there's a address but no publisher in " cite$ * warning$ "" % "[" * bbl.sine.nomine * "]" * % 无出版者 } { address bbl.colon * % 有出版地 publisher * } % 有出版者 if$ } if$ } if$ % 出版年 year empty$ { "there's no year in " cite$ * warning$ } { type$ "inproceedings" = { bbl.comma * year * } { publisher empty$ { year * } { bbl.comma * year * } if$ } if$ type$ "periodical" = { year2 empty$ % 对连续出版物可以排版 year2 { skip$ } { "--" * year2 "l" change.case$ "now" = { skip$ } { year2 * } if$ } if$ } { skip$ } if$ } if$ % % DEBUG % duplicate$ "-- }=" swap$ * debug.output % % END OF DEBUG } % 出版地: 学校, 出版年 FUNCTION {format.address.school.year} { new.block address empty$ { "[" bbl.sine.loco * "]" * bbl.colon * % 无出版地 school empty$ { "there's neither address nor school in " cite$ * warning$ "[" bbl.sine.nomine * "]" * % 无出版者 } { "there's a school but no address in " cite$ * warning$ school * % 有出版者 } if$ } { address bbl.colon * % 有出版地 school empty$ { "there's a address but no school in " cite$ * warning$ "[" bbl.sine.nomine * "]" * % 无出版者 } { school * } % 有出版者 if$ } if$ % 出版年 year empty$ { "there's no year in " cite$ * warning$ } { bbl.comma * year * } if$ } % FUNCTION {format.title.type} % { title empty$ % { type empty$ % { "" } % { "there's a type but no title in " cite$ * warning$ % type % } % if$ % } % { type empty$ % 'title % { title bbl.colon * type * } % if$ % } % if$ % } FUNCTION {format.note} { note empty$ { new.block "" } { url empty$ { new.block } { before.all 'output.state := } if$ note } if$ } %%%%%%%%%%%%%%%%% %% 著录格式: 专著 %%%%%%%%%%%%%%%%% % 普通图书 FUNCTION {book} { start.entry % 开始 author empty$ % 主要责任者 { format.editors "author and editor" output.warn } { format.authors output.nonnull } if$ format.book.title "title" output.warn % 题名项 format.translators output % 其他责任者(可选) format.edition output % 版本项 format.address.publisher.year output.nonnull % format.reference.date output % format.url output % 获取或访问路径 format.note output % 备注 fin.entry } % 标准 FUNCTION {standard} { start.entry organization empty$ % 主要责任人 { format.institution "organization and institution" output.warn } { format.organization output.nonnull } if$ format.book.title "title" output.warn % 题名项 format.translators output % 其他责任人 format.edition output % 版本项 format.address.publisher.year output.nonnull % 出版项 format.url output % URL format.note output % 备注项 fin.entry } % 学位论文 FUNCTION {phdthesis} { start.entry format.authors "author" output.warn format.book.title "title" output.warn format.address.school.year output format.note output fin.entry } % 会议录/论文集 FUNCTION {proceedings} { start.entry editor empty$ { organization empty$ { format.institution "author, organization institution" output.warn } { format.organization output.nonnull } if$ } { format.editors output.nonnull } if$ format.book.title "title" output.warn format.address.publisher.year output format.note output fin.entry } % 科技报告 FUNCTION {techreport} { start.entry author empty$ { organization empty$ { format.institution "author, organization and institution" output.warn } { format.organization output.nonnull } if$ } { format.authors output.nonnull } if$ format.techreport.title "title" output.warn format.address.publisher.year output.nonnull format.url output format.note output fin.entry } %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 著录格式: 专著中析出的文献 %%%%%%%%%%%%%%%%%%%%%%%%%%%% FUNCTION {format.collection.editors} { booktitle empty$ { "" } { after.title 'output.state := format.editors } if$ } FUNCTION {format.address} { booktitle empty$ { new.block } { mid.sentence 'output.state := } if$ address empty$ { "" } { new.block address } if$ } FUNCTION {format.month.year} { month empty$ { "" } { month " " * } if$ year empty$ { "There is month but no year in " cite$ * warning$ } { year * } if$ } FUNCTION {format.year} { year empty$ { "There is month but no year in " cite$ * warning$ } { new.block year " " * } if$ } FUNCTION {format.collection.title} { booktitle empty$ { "" } { new.block language empty$ {"In "} {"见"} if$ booktitle * % address empty$ % { skip$ } % { bbl.comma * address * bbl.comma * % month empty$ % { skip$ } % { month * } % if$ % year empty$ % { skip$ } % { " " * year * } % if$ % } % if$ } if$ } % 图书中析出的文献 FUNCTION {inbook} { start.entry author empty$ { format.editors "author and editor" output.warn } { format.authors output.nonnull } if$ format.book.title "title" output.warn format.collection.editors "editor" output.warn format.collection.title "booktitle" output.warn format.translators output % 其他责任人 format.edition output % 版本项 format.address.publisher.year output.nonnull % 出版项 format.pages "pages" output.warn % format.url output % URL format.note output % 备注项 fin.entry } %%%%%%%%%%%%%%%%% %% 著录格式: 专利 %%%%%%%%%%%%%%%%% FUNCTION {patent} { start.entry author empty$ { format.assignees "assignee" output.warn } { format.authors output.nonnull } if$ format.patent.title "title" output.warn format.patent.publication output format.url output format.note output fin.entry } % 电子文献更新或修改日期 FUNCTION {format.update.date} { update empty$ { "" } { output.state mid.sentence = { before.all 'output.state := } { skip$ } if$ "~(" update * ")" * } if$ } %%%%%%%%%%%%%%%%%%%%% %% 著录格式: 电子文献 %%%%%%%%%%%%%%%%%%%%% FUNCTION {electronic} { start.entry author empty$ { organization "author and organization" output.warn } { format.authors output.nonnull } if$ format.book.title output format.electronic.publication output format.update.date output format.reference.date output format.url output format.note output fin.entry } %%%%%%%%%%%%%%%%%%%%%%% %% 著录格式: 连续出版物 %%%%%%%%%%%%%%%%%%%%%%% FUNCTION {periodical} { start.entry editor empty$ { format.organization "editors and organization" output.warn } { format.editors output.nonnull } if$ format.book.title "title" output.warn format.year.volume.number output format.address.publisher.year output format.url output format.note output fin.entry } FUNCTION {format.journal.title} { journal empty$ { "" } { new.block journal } if$ } % 连续出版物中析出的文献 FUNCTION {article} { start.entry format.authors "author" output.warn format.book.title "title" output.warn format.journal.title "journal" output.warn format.volume.number.year.month output %format.year.volume.number output format.pages "pages" output.warn format.reference.date output format.url output format.note output fin.entry } FUNCTION {booklet} { start.entry format.authors output new.block format.title "title" output.warn howpublished address new.block.checkb howpublished output address output format.date output new.block note output fin.entry } FUNCTION {incollection} { start.entry format.authors "author" output.warn new.block format.ictitle "title" output.warn new.block crossref missing$ { %format.in.ed.booktitle "booktitle" output.warn %format.bvolume output format.in.ed.booktitle.volume "booktitle" output.warn format.number.series output format.chapter.pages output new.sentence % publisher "publisher" output.warn % address output format.address.publisher.year output format.edition output format.date ":" * format.pages * output %format.date "year" output.warn } { format.incoll.inproc.crossref output.nonnull format.chapter.pages output } if$ new.block note output fin.entry } % 论文集中析出的文献 FUNCTION {inproceedings} { start.entry format.authors "author" output.warn format.book.title "title" output.warn % format.collection.editors "editor" output.warn format.collection.title "booktitle" output.warn format.address output % format.month.year output format.year output % format.address.publisher.year output.nonnull % 出版项 format.pages "pages" output.warn % % format.url output % URL % format.note output % 备注项 % format.in.booktitle "booktitle" output.warn % %format.bvolume output % %format.number.series output % %format.pages output % address empty$ % { organization publisher new.sentence.checkb % organization output % publisher output % %format.date "year" output.warn % %year output % format.date ":" * format.pages * output % } % { %address output.nonnull % format.address.publisher.year output % %format.date "year" output.warn % % year output % format.date ":" * format.pages * output % new.sentence % organization output % %publisher output % } % if$ % new.block % pages output %remove.dots % { format.incoll.inproc.crossref output.nonnull % format.pages output % } % if$ % new.block % note output fin.entry } FUNCTION {manual} { start.entry author empty$ { organization empty$ 'skip$ { organization output.nonnull address output } if$ } { format.authors output.nonnull } if$ new.block format.book.title "title" output.warn author empty$ { organization empty$ { address new.block.checka address output } 'skip$ if$ } { organization address new.block.checkb organization output address output } if$ format.edition output format.date output new.block note output fin.entry } FUNCTION {thesis.type} { %"~[D]" language empty$ { "[Dissertation]" } { "[学位论文]" } if$ } FUNCTION {masterthesis} { start.entry format.authors "author" add.period$ output.warn new.block format.title remove.dots " " * thesis.type * output new.block %format.address.school output %address output school "school" output.warn format.date "year" output.warn new.block %note output fin.entry } %FUNCTION {phdthesis} %{ start.entry % format.authors "author" add.period$ output.warn %new.block %format.title remove.dots " " * thesis.type * output %new.block %format.address.school output %%address output %school "school" output.warn %format.date "year" output.warn %new.block %%note output %fin.entry %} FUNCTION {misc} { start.entry format.authors output % title howpublished new.block.checkb format.title output % howpublished new.block.checka % howpublished output % format.date output format.address output format.month.year output format.pages "pages" output.warn format.url output % new.block format.note output fin.entry % empty.misc.check } FUNCTION {unpublished} { start.entry format.authors "author" output.warn new.block format.title "title" output.warn new.block note "note" output.warn format.date output fin.entry } % 专用控制条目 BUPTThesisBSTCTL 用于提供方便的用户设置接口 FUNCTION {BUPTThesisBSTCTL}{ is.print.banners.to.terminal { "** BUPTThesis BST control entry " quote$ * cite$ * quote$ * " detected." * top$ } { skip$ } if$ % CTLuse_article_number % empty$ % { skip$ } % { CTLuse_article_number % yes.no.to.int % 'is.use.number.for.article := % } % if$ % CTLuse_paper % empty$ % { skip$ } % { CTLuse_paper % yes.no.to.int % 'is.use.paper := % } % if$ % CTLuse_forced_etal % empty$ % { skip$ } % { CTLuse_forced_etal % yes.no.to.int % 'is.forced.et.al := % } % if$ % 显示作者数目 CTLmax_names_forced_etal empty$ { skip$ } { CTLmax_names_forced_etal string.to.integer 'max.num.names.before.forced.et.al := } if$ % 论文作者英文姓名 CTLauthor_name_english empty$ { skip$ } { CTLauthor_name_english 'author.name.in.english := % #1 'is.for.peer.review := % "CTLauthor_name_english=" author.name.in.english * debug.output } if$ % 论文作者中文姓名 CTLauthor_name_chinese empty$ { skip$ } { CTLauthor_name_chinese 'author.name.in.chinese := % #1 'is.for.peer.review := % "CTLauthor_name_chinese=" author.name.in.chinese * debug.output } if$ CTLfor_peer_review empty$ { skip$ } { CTLfor_peer_review yes.no.to.int 'is.for.peer.review := } 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_emph_author_en % 强调显示的作者英文姓名 % empty$ % { skip$ } % 若没有给出则跳过 % { CTLname_emph_author_en % 'name.emph.author.en := % 否则更新 name.emph.author.en % } % if$ % CTLname_emph_author_zh % 强调显示的作者中文姓名 % empty$ % { skip$ } % 若没有给出则跳过 % { CTLname_emph_author_zh % 'name.emph.author.zh := % 否则更新 name.emph.author.zh % } % if$ CTLname_format_string % 英文姓名排版格式字符串 empty$ { skip$ } % 若没有自定义则跳过 { CTLname_format_string % 否则更新 name.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$ } %%%%%%%%%%%% %% 条目别名 %%%%%%%%%%%% %FUNCTION {phdthesis} {thesis} %FUNCTION {masterthesis} {thesis} FUNCTION {conference} {inproceedings} FUNCTION {online} {electronic} FUNCTION {internet} {electronic} FUNCTION {webpage} {electronic} FUNCTION {www} {electronic} FUNCTION {default.type} {misc} %%%%%%%%%% %% 主程序 %%%%%%%%%% 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} % 显示完成提示信息 %% EOF