From 5e5275b73b7c203d8e1cc3372019605e8b5cfe01 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Sun, 24 Nov 2024 17:46:47 +0800 Subject: [PATCH] init repo --- .gitignore | 39 + .latexmkrc | 7 + BUPTBachelor.bst | 2593 ++++++++++++++++++++++++++++++++++++++++ BUPTBachelorThesis.sty | 258 ++++ LICENSE | 21 + README.md | 0 appendix/appendix1.tex | 32 + chapters/abstract.tex | 79 ++ chapters/chapter1.tex | 7 + docs/.gitkeep | 0 main.tex | 67 ++ ref.bib | 0 12 files changed, 3103 insertions(+) create mode 100644 .gitignore create mode 100644 .latexmkrc create mode 100644 BUPTBachelor.bst create mode 100644 BUPTBachelorThesis.sty create mode 100644 LICENSE create mode 100644 README.md create mode 100644 appendix/appendix1.tex create mode 100644 chapters/abstract.tex create mode 100644 chapters/chapter1.tex create mode 100644 docs/.gitkeep create mode 100644 main.tex create mode 100644 ref.bib diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9498405 --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## VS Code +.vscode/ + +## macOS +.DS_Store + +## Temporary files +temp/ +BUPTBachelorThesis.pdf diff --git a/.latexmkrc b/.latexmkrc new file mode 100644 index 0000000..b6b06cb --- /dev/null +++ b/.latexmkrc @@ -0,0 +1,7 @@ +$pdf_mode = 1; +$pdflatex = "xelatex -file-line-error --shell-escape -src-specials -synctex=1 -interaction=nonstopmode %O %S;cp %D %R.pdf"; +$recorder = 1; +$clean_ext = "synctex.gz acn acr alg aux bbl bcf blg brf fdb_latexmk glg glo gls idx ilg ind ist lof log lot out run.xml toc dvi"; +$bibtex_use = 2; +$out_dir = "temp"; +$jobname = "BUPTBachelorThesis"; diff --git a/BUPTBachelor.bst b/BUPTBachelor.bst new file mode 100644 index 0000000..b00b002 --- /dev/null +++ b/BUPTBachelor.bst @@ -0,0 +1,2593 @@ +%% 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 diff --git a/BUPTBachelorThesis.sty b/BUPTBachelorThesis.sty new file mode 100644 index 0000000..be12952 --- /dev/null +++ b/BUPTBachelorThesis.sty @@ -0,0 +1,258 @@ +\usepackage{ctex} % invole CJKfntef +\usepackage{xeCJKfntef} +\usepackage{setspace} % spacing +\usepackage{xcolor} % color +\usepackage{xltxtra} % print a XeLaTeX +\usepackage{setspace} +\usepackage{subfiles} + +% Font family +\setmainfont[Mapping=tex-text]{Times New Roman} + +% Normal font size is XiaosiHao +\renewcommand{\normalsize}{\zihao{-4}\songti\normalfont} + +% Word spacing +% Usage: \ziju{spacing} spacing can be 1em, 10pt, etc. +%\newcommand{\ziju}[1]{\renewcommand{\CJKglue}{\hskip #1}} + +%%%%%% Page Style %%%%%% + +% Margin +\usepackage[left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm,headheight=1.5cm,headsep=0.6cm,footskip=0.5cm]{geometry} + + +% Header and footer +\usepackage{fancyhdr} + +% 正文的页眉页脚格式 +\fancypagestyle{mainmatter}{ + \fancyhf{} % clear all header and footer fields + \fancyhead[C]{\songti\zihao{-5}{北京邮电大学本科毕业设计(论文)}} + \fancyfoot[C]{\songti\zihao{-5}{\thepage}} + \renewcommand{\headrulewidth}{0.8pt} +} + +% 目录页的页眉页脚格式 +\fancypagestyle{frontmatter}{ + \fancyhf{} % clear all header and footer fields + \fancyhead[C]{\songti\zihao{-5}{北京邮电大学本科毕业设计(论文)}} + \fancyfoot[C]{\songti\zihao{-5}{\thepage}} + \renewcommand{\headrulewidth}{0.8pt} +} + +% Bookmark (Chinese bookmark supported) +\usepackage{url} +\def\UrlFont{} +\usepackage[xetex, pdfstartview=FitH, +bookmarksnumbered=true, bookmarksopen=true, bookmarksdepth=2, colorlinks=true, +pdfborder=001, linkcolor=black, citecolor=black, urlcolor=black]{hyperref} % 修改bookmarksdepth指定书签层级 +% Deal with line breaking in url +\makeatletter +\def\UrlAlphabet{% + \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j% + \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t% + \do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D% + \do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N% + \do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X% + \do\Y\do\Z} +\def\UrlDigits{\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0} +\g@addto@macro{\UrlBreaks}{\UrlOrds} +\g@addto@macro{\UrlBreaks}{\UrlAlphabet} +\g@addto@macro{\UrlBreaks}{\UrlDigits} +\makeatother +% Eliminate warnings about non-string commands not shown in PDF bookmarks. If you use more commands in section titles or chapter titles, you can add the commands here. +\pdfstringdefDisableCommands{ + \def \quad{} + \def \qquad{} +} + +% Line spread +\renewcommand{\baselinestretch}{1.30} +% \setlength{\itemsep}{-5pt} % item seperate too wide + +% Footnote +% Usage: \footnote{Your Text} +\usepackage[perpage]{footmisc} +% \usepackage{footnpag} % footnote per page +% \usepackage{footnote} +% \let\ftnt=\footnote +% \renewcommand{\footnote}[1]{\ftnt{\footnotefont{#1}}} + +% No Number Footnote +% Especially for stating which project the thesis is supported +% Usage: \blfootnote{Your Text} +\usepackage{lipsum} +\newcommand\blfootnote[1]{ + \begingroup + \renewcommand\thefootnote{}\footnote{#1} + \addtocounter{footnote}{-1} + \endgroup +} + +%%%%%% Detail style %%%%%% +% Underline +% Usage: \ul[length]{} +\makeatletter +\newcommand\ul[2][4cm]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt} +\makeatother +\def\ULthickness{1.1pt}% + +% Content style +\setcounter{secnumdepth}{3} % let subsubsection have number +\setcounter{tocdepth}{3} % let subsubsection appear in CONTENTS +\usepackage{titletoc} +\newif{\ifpagenumber} +\pagenumbertrue +\renewcommand\contentsname{\centerline{\toctitlefont{目\qquad{}录}}} +\titlecontents{chapter}[0em]{\tocchapterfont\vspace{0.4mm}} {% + \ifpagenumber \CTEXnumber{\CJKsection}{\thecontentslabel}{第\CJKsection{章}\quad{}} \fi}{% + } {% + \ifpagenumber \hspace{.5em}\titlerule*[6pt]{$\cdot$}\contentspage\fi} +\titlecontents{section}[1em]{\tocsectionfont\vspace{0.4mm}}{% + \thecontentslabel\quad{}}{}{% + \ifpagenumber \hspace{.5em}\titlerule*[6pt]{$\cdot$}\contentspage\fi}% +\titlecontents{subsection}[2em]{\tocsubsectionfont\vspace{0.4mm}}{% + \thecontentslabel\quad{}}{}{% + \ifpagenumber \hspace{.5em}\titlerule*[6pt]{$\cdot$}\contentspage\fi}% +\titlecontents{subsubsection}[3em]{\tocsubsubsectionfont\vspace{0.4mm}}{% + \thecontentslabel\quad{}}{}{% + \ifpagenumber \hspace{.5em}\titlerule*[6pt]{$\cdot$}\contentspage\fi}% +\makeatletter % Content Page style +\renewcommand\frontmatter{% + \if@openright\cleardoublepage\else\clearpage\fi% + \@mainmatterfalse% + \pagenumbering{Roman}% Roman style page number + \pagestyle{frontmatter} + } +\makeatother% + +\makeatletter % Content Page style +\renewcommand\mainmatter{% + \if@openright\cleardoublepage\else\clearpage\fi% + \@mainmattertrue% + \pagenumbering{arabic}% Arabic style page number + \pagestyle{mainmatter} + } +\makeatother% + +\makeatletter % Translation Page style +\renewcommand\backmatter{% + \if@openright\cleardoublepage\else\clearpage\fi% + \@mainmatterfalse% + \pagestyle{empty} +} +\makeatother% + +% Text style +\usepackage{titlesec} +\titleformat{\chapter}[hang]{\heiti\zihao{3}\centering\textbf}{第\chinese{chapter}章}{1em}{} +% 缩短章节标题的上边距 +\titlespacing{\chapter}{0pt}{-20pt}{12pt} +\titleformat{\section}{\heiti\zihao{4}\textbf}{\thesection}{1em}{} +\titleformat{\subsection}{\heiti\zihao{-4}\textbf}{\qquad{}\thesubsection}{1em}{} +\titleformat{\subsubsection}{\heiti\zihao{-4}\textbf}{\qquad{}\thesubsubsection}{1em}{} + +% Reference style +% \usepackage[numbers,sort&compress]{natbib} +\usepackage[super,numbers,sort&compress]{natbib} +%\usepackage[backend=biber,texencoding=utf8,bibencoding=utf8]{biblatex} +\renewcommand\bibname{\centerline{\heiti\zihao{3}\textbf{参考文献}}} +\setcitestyle{square} +\setlength{\bibsep}{0.2em} + +% Appendix +\usepackage{appendix} + +%% Some tweaking/features/styles + +% Figure & Table +\usepackage{caption} +\usepackage[position=t,singlelinecheck=off]{subfig} + +\renewcommand{\captionfont}{\kaishu\zihao{5}} +\renewcommand{\captionlabelfont}{\kaishu\zihao{5}} +\DeclareCaptionLabelSeparator{twospace}{ ~} +\captionsetup{labelsep=twospace} %去掉图1:后冒号 +\renewcommand{\tablename}{表} +\renewcommand{\thetable}{~\arabic{chapter}-\arabic{table}~} +\renewcommand{\figurename}{图} +\renewcommand{\thefigure}{~\arabic{chapter}-\arabic{figure}~} +\renewcommand{\theequation}{\arabic{chapter}-\arabic{equation}~} +% 外文文献中表、图、公式、代码编号重置 +\newcommand{\newtranschapter}{\thispagestyle{empty}\addtocounter{chapter}{1}\setcounter{table}{0}\setcounter{equation}{0}\setcounter{figure}{0}\setcounter{lstlisting}{0}} + +% equation tweaking +\usepackage{amssymb} +\usepackage{bm} % 加粗使用 +\usepackage{amsmath,delarray,bm,mathtools} +\newtagform{newtag}[]{式(}{)} %定义公式编号样式 +\usetagform{newtag} + +% \usepackage{amsthm} +\newtheorem{definition}{定义}[chapter] +\newtheorem{theorem}{定理}[chapter] +\newtheorem{axiom}{公理}[chapter] +\newtheorem{lemma}{引理}[chapter] +\newtheorem{proposition}{命题}[chapter] +\newtheorem{corollary}{推论}[chapter] + +% Algorithm +\usepackage{algorithm} +\usepackage{algorithmicx} +\usepackage{algpseudocode} + +% Code +\usepackage{listings} +\usepackage{xcolor} +\lstset{ + basicstyle=\ttfamily\wuhao, %五号等宽字体 + extendedchars=true, + keywordstyle=\color{blue}, + commentstyle=\color{green!30!black}, + showspaces=false, % 显示空格 + showstringspaces=true, % 字符串中显示空格 + showtabs=false, % 显示 TAB + tabsize=2, % TAB 被当作两个空格 + captionpos=t, % 标题位置 + breaklines=true, % 自动断行 + breakatwhitespace=true, + basewidth={0.5em,0.35em}, + frame=single, %单线边框,注释掉则无边框 + numbers=left, %行号位于左侧 + numberbychapter=true, +% xleftmargin=.5em, +% xrightmargin=.5em, +% aboveskip=1ex, +% columns=flexible, % 如果不指定等宽字体用这个 +% mathescape, + escapeinside={\%*}{*)} +} + +\renewcommand{\lstlistingname}{\kaishu{代码}} +\makeatletter +\AtBeginDocument{% + \renewcommand \thelstlisting + {\ifnum \c@chapter>\z@ \thechapter-\fi \@arabic\c@lstlisting}% +} +\makeatother + + +% insert PDF +\usepackage[final]{pdfpages} + +% insert blank page +\makeatletter +\newcommand\blankmatter{% + \if@openright\cleardoublepage\else\clearpage\fi% + \@mainmatterfalse% + \pagestyle{empty}}% +\makeatother% + +% List environment config +\usepackage[inline]{enumitem} +% Uncomment the two lines below if you want an list environment to share the same indent +% with a paragraph and no extra blank before, in or after the list. +%\setlist[itemize]{labelindent=\parindent,leftmargin=*,noitemsep,topsep=0pt} +% Modify the label format by yourself if you do not like 1), 2), ... here. +%\setlist[enumerate]{labelindent=\parindent,leftmargin=*,noitemsep,topsep=0pt,label={\arabic*)}} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7e62805 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 sqyx008 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/appendix/appendix1.tex b/appendix/appendix1.tex new file mode 100644 index 0000000..129a5e4 --- /dev/null +++ b/appendix/appendix1.tex @@ -0,0 +1,32 @@ +\documentclass[../main.tex]{subfiles} + +\begin{document} + +\section*{附录1\quad{}缩略语表} +\phantomsection\addcontentsline{toc}{section}{附录1\quad{}缩略语表} + +\begin{table}[!htbp] + \centering + \begin{tabular}{l|l|l|l} + \hline + \multicolumn{1}{c|}{\multirow{2}{*}{\textbf{类别}}} & \multicolumn{1}{c|}{\multirow{2}{*}{\textbf{特征}}} & \multicolumn{2}{c}{\textbf{不知道叫什么的表头}} \\ + \cline{3-4} + & & \multicolumn{1}{c|}{\textbf{描述}} & \multicolumn{1}{c}{\textbf{形式与理论范围}} \\ + \hline + \multirow{3}{*}{正常互动} & 点赞量 & 微博的点赞数量 & 数值,$\mathbb{N}$ \\ + \cline{2-4} + & 评论量 & 微博的评论数量 & 数值,$\mathbb{N}$ \\ + \cline{2-4} + & 转发量 & 微博的转发数量 & 数值,$\mathbb{N}$ \\ + \hline + 非正常互动 & 羡慕量 & 微博的羡慕数量 & 数值,$\mathbb{N}$ \\ + \hline + \end{tabular} + \renewcommand{\arraystretch}{1.38}% + \setlength{\abovecaptionskip}{0pt}% + \setlength{\belowcaptionskip}{10pt}% + \caption{缩略语表} + \label{tab:1} +\end{table} + +\end{document} diff --git a/chapters/abstract.tex b/chapters/abstract.tex new file mode 100644 index 0000000..a1e46a9 --- /dev/null +++ b/chapters/abstract.tex @@ -0,0 +1,79 @@ +\documentclass[../main.tex]{subfiles} + +\begin{document} + +% 中文摘要 +\begin{titlepage} + + \pagestyle{empty} + + \begin{spacing}{1.05} + \centering + \parbox[c]{.75\textwidth}{ + \centering + \heiti\zihao{3}\textbf{\thesistitle} + } + \end{spacing} + + \begin{spacing}{1.5} + \centering + \zihao{-3}\quad{} \\ + \heiti\zihao{-3}\textbf{摘\quad{}要} \\ + \end{spacing} + \zihao{-3}\quad{} + + \normalsize + + 这里撰写摘要,大概500字左右。 + + \quad{} + + \par\noindent\heiti\zihao{-4}\textbf{关键词}\quad{} + { + \songti\zihao{-4} + 关键词一\quad + 关键词二\quad + } +\end{titlepage} + +\thispagestyle{empty} + +% 英文摘要 +\begin{titlepage} + + \pagestyle{empty} + + \begin{spacing}{1.05} + \centering + % 如果你的标题太长,可能会换行;如果你对换行位置不满意,请调节下面第一个{}的参数 + \parbox[c]{.75\textwidth}{ + \centering + \zihao{3}\textbf{\thesisenglishtitle} + } + \end{spacing} + + \begin{spacing}{1.5} + \centering + \zihao{-3}\quad \\ + \zihao{-3}\textbf{ABSTRACT} \\ + \end{spacing} + \zihao{-3}\quad + + \normalsize + + This is the english abstract, and the content should be the same as the chinese abstract. + + \quad{} + + \par\noindent\zihao{-4}\textbf{KEY WORDS}\quad{}% + { + \zihao{-4} + Keyword1\quad + Keyword2\quad + } + +\end{titlepage} + +\thispagestyle{empty} + +\end{document} diff --git a/chapters/chapter1.tex b/chapters/chapter1.tex new file mode 100644 index 0000000..9000bc0 --- /dev/null +++ b/chapters/chapter1.tex @@ -0,0 +1,7 @@ +\documentclass[../main.tex]{subfiles} + +\begin{document} + +\chapter{设计模板的背景和意义} + +\end{document} diff --git a/docs/.gitkeep b/docs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/main.tex b/main.tex new file mode 100644 index 0000000..b7ba618 --- /dev/null +++ b/main.tex @@ -0,0 +1,67 @@ +%不需要区分奇偶页的请使用下面一行 +\documentclass[a4paper,AutoFakeBold,oneside,12pt]{book} +%需要区分奇偶页的(即每一章第一页一定在奇数页上)请使用下面一行 +%\documentclass[a4paper,AutoFakeBold,openright,12pt]{book} +\usepackage{BUPTBachelorThesis} + +% 定义某些在论文中重复使用的字段 +\def\thesistitle{一种本科毕业设计论文模板的设计与实现} +\def\thesisenglishtitle{Design and Implementation of a Bachelor Thesis Template} + +\begin{document} + +% 封面 +\blankmatter +\includepdf[pages=-]{docs/cover.pdf} + +% 诚信声明 +\blankmatter +\includepdf[pages=-]{docs/statement.pdf} + +% 摘要 +\subfile{chapters/abstract} + +% 目录 +\fancypagestyle{plain}{\pagestyle{frontmatter}} +\frontmatter +\tableofcontents + +% 正文 +\newpage +\mainmatter +\fancypagestyle{plain}{\pagestyle{mainmatter}} + +\subfile{chapters/chapter1} + +% 参考文献 +\clearpage +\phantomsection\addcontentsline{toc}{chapter}{参考文献} +\bibliographystyle{BUPTBachelor} +\songti\zihao{5}{\bibliography{ref}} + +% 致谢 +\clearpage +\chapter*{致\qquad{}谢} +\phantomsection\addcontentsline{toc}{chapter}{致\qquad{}谢} + +Thanks to everyone who helps me when finishing my bachelor thesis. + +% 附录 +\setcounter{figure}{0} +\renewcommand{\thefigure}{~附-\arabic{figure}~} +\setcounter{equation}{0} +\renewcommand{\theequation}{~附-\arabic{equation}~} +\setcounter{table}{0} +\renewcommand{\thetable}{~附-\arabic{table}~} +\setcounter{lstlisting}{0} +\makeatletter + \renewcommand \thelstlisting + {附-\@arabic\c@lstlisting} +\makeatother + +\chapter*{附\qquad{}录} +\phantomsection\addcontentsline{toc}{chapter}{附\qquad{}录} + +\subfile{appendix/appendix1} + +\end{document} diff --git a/ref.bib b/ref.bib new file mode 100644 index 0000000..e69de29