BUPTBachelorThesis/Proposal/BUPTBachelor.bst
2024-11-27 22:58:01 +08:00

2594 lines
55 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

%% BUPTThesis.bst
%%
%% 北京邮电大学研究生学位论文参考文献 BibTeX 样式
%%
%% 项目主页http://code.google.com/p/buptthesis/
%%
%% 本样式基于 IEEEtran 和 ThuThesis 修改而成,基本满足北京邮电大学研究生论文格式要求
%%
%% 作者:
%% 张煜 (email:dazzlezhang@gmail.com)
%%
%% 更新记录:
%% $LastChangedBy$
%% $LastChangedDate$
%% $LastChangedRevision$
%% 一些设置的缺省值
% 英文姓名排版格式字符串, 按<last name全称>~<first name首字母><, 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$ % <language 判断结束>
remove.period % 并删除缩写符号'.'
't := % 格式化后的姓名暂存于 t
nameptr #1 >
{ nameptr max.num.names.before.forced.et.al #1 + =
{ "others" 't := % 如果当前作者的序数已经超出了最大列显作者数
#1 'namesleft := } % 则置未处理姓名数为#1, 以便跳出循环
{ bbl.comma * } % 如果作者序数在允许范围内, 则添加逗号
if$ % <et al 判断结束>
namesleft #1 > % 若当前姓名不是最后一个
{ t * } % 显示当前姓名
{ t "others" = % 若当前姓名是最后一个且后面有略去的姓名
{ bbl.etal * } % 添加", et~al"或",等"
{ t * } % 如果没有略去姓名,以句点结束
if$ % <others 判断结束>
}
if$ % <namesleft 判断结束>
}
{ 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$ { "<N/A>" }{ 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