From 9b56c44bd5666dba413114eb2eac8ab7ae75e5e5 Mon Sep 17 00:00:00 2001 From: liziwl Date: Sat, 7 Sep 2024 23:31:37 +0800 Subject: [PATCH 1/8] update note --- data/acknowledgements.tex | 16 ++++++++++++---- data/chap02.tex | 2 ++ data/conclusion.tex | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/data/acknowledgements.tex b/data/acknowledgements.tex index 8447d7c..8009eff 100644 --- a/data/acknowledgements.tex +++ b/data/acknowledgements.tex @@ -1,11 +1,19 @@ % !TeX root = ../sustechthesis-example.tex \begin{acknowledgements} - 衷心感谢导师×××教授和物理系××副教授对本人的精心指导。他们的言传身教将使我终生受益。 - 在美国麻省理工学院化学系进行九个月的合作研究期间,承蒙 Robert Field 教授热心指导与帮助,不胜感激。 +衷心感谢导师×××教授对本人的精心指导。他的言传身教将使我终生受益。 - 感谢×××××实验室主任×××教授,以及实验室全体老师和同窗们学的热情帮助和支持! +感谢×××教授,以及实验室全体老师和同窗们的热情帮助和支持! + +本课题承蒙××××基金资助,特此致谢。\\ + +\textcolor{red}{\textbf{以下内容为提示,仔细阅读后删除。}} + +致谢应另起页,放置在参考文献、附录之后,标题和页眉均为“致谢”。语言要诚恳、恰当、简短。 + +致谢对象可以包括指导教师,在研究工作中提出建议和提供帮助的人,给予转载和引用权的资料、图片、文献、研究和调查的所有者,其他应感谢的组织和个人,资助研究工作的项目基金、奖学金基金、合同单位、资助或支持的企业、组织或个人,协助完成研究工作和提供便利条件的组织或个人。致谢字数以不超过一页纸为宜。 + +学位论文应由学生在导师(组)的指导下独立完成;\textcolor{red}{\textbf{若涉及团队工作,应注明属于团队成果,并明确个人独立完成的内容}},科学严谨,恪守规范。 - 本课题承蒙国家自然科学基金资助,特此致谢。 \end{acknowledgements} diff --git a/data/chap02.tex b/data/chap02.tex index cbe1b93..11929f2 100644 --- a/data/chap02.tex +++ b/data/chap02.tex @@ -10,6 +10,8 @@ \section{插图} 其他的栅格图应使用无损的 PNG 格式。 注意,LaTeX 不支持 TIFF 格式;EPS 格式已经过时。 +建议图的大小一般为宽 \SI{6.67}{\centi\meter} \times 高 \SI{5.00}{\centi\meter}。特殊情况下,也可为宽 \SI{9.00}{\centi\meter} \times 高 \SI{6.75}{\centi\meter},或宽 \SI{13.5}{\centi\meter} \times 高 \SI{9.00}{\centi\meter}。总之,一篇论文中,同类图片的大小应该一致,编排美观、整齐。图应尽可能显示在同一页(屏)。 + \begin{figure} \centering \includegraphics[width=0.6\linewidth]{example-image-a.pdf} diff --git a/data/conclusion.tex b/data/conclusion.tex index 332d81f..5160219 100644 --- a/data/conclusion.tex +++ b/data/conclusion.tex @@ -6,4 +6,6 @@ 结论应是作者在学位论文研究过程中所取得的创新性成果的概要总结,不能与摘要混为一谈。博士学位论文结论应包括论文的主要结果、创新点、展望三部分,在结论中应概括论文的核心观点,明确、客观地指出本研究内容的创新性成果(含新见解、新观点、方法创新、技术创新、理论创新),并指出今后进一步在本研究方向进行研究工作的展望与设想。对所取得的创新性成果应注意从定性和定量两方面给出科学、准确的评价,分(1)、(2)、(3)…条列出,宜用“提出了”、“建立了”等词叙述。 +在评价自己的研究工作成果时,要实事求是,除非有足够的证据表明自己的研究是“首次”、“领先”、“填补空白”的,否则应避免使用这些或类似词语 + \end{conclusion} From 859b14bf5fa037aaeab7a170e8ec67e661b172d2 Mon Sep 17 00:00:00 2001 From: liziwl Date: Sun, 8 Sep 2024 10:13:56 +0800 Subject: [PATCH 2/8] add bst --- sustechthesis-author-year.bst | 2644 +++++++++++++++++++++++++++++++++ 1 file changed, 2644 insertions(+) create mode 100644 sustechthesis-author-year.bst diff --git a/sustechthesis-author-year.bst b/sustechthesis-author-year.bst new file mode 100644 index 0000000..0566533 --- /dev/null +++ b/sustechthesis-author-year.bst @@ -0,0 +1,2644 @@ +%% +%% This is file `gbt7714-author-year.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gbt7714.dtx (with options: `2015,author-year') +%% ------------------------------------------------------------------- +%% GB/T 7714 BibTeX Style +%% https://github.com/zepinglee/gbt7714-bibtex-style +%% Version: 2022/10/03 v2.1.5 +%% ------------------------------------------------------------------- +%% Copyright (C) 2016--2022 by Zeping Lee +%% ------------------------------------------------------------------- +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% ------------------------------------------------------------------- +INTEGERS { + citation.et.al.min + citation.et.al.use.first + bibliography.et.al.min + bibliography.et.al.use.first + uppercase.name + terms.in.macro + year.after.author + period.after.author + italic.book.title + sentence.case.title + link.title + title.in.journal + show.patent.country + show.mark + space.before.mark + show.medium.type + short.journal + italic.journal + bold.journal.volume + show.missing.address.publisher + space.before.pages + only.start.page + wave.dash.in.pages + show.urldate + show.url + show.doi + show.preprint + show.note + show.english.translation + end.with.period + lang.zh.order + lang.ja.order + lang.en.order + lang.ru.order + lang.other.order +} + +STRINGS { + component.part.label +} + +FUNCTION {load.config} +{ + #2 'citation.et.al.min := + #1 'citation.et.al.use.first := + #4 'bibliography.et.al.min := + #3 'bibliography.et.al.use.first := + #1 'uppercase.name := + #0 'terms.in.macro := + #1 'year.after.author := + #0 'period.after.author := + #0 'italic.book.title := + #0 'sentence.case.title := + #0 'link.title := + #1 'title.in.journal := + #0 'show.patent.country := + #1 'show.mark := + #0 'space.before.mark := + #1 'show.medium.type := + "slash" 'component.part.label := + #0 'short.journal := + #0 'italic.journal := + #0 'bold.journal.volume := + #0 'show.missing.address.publisher := + #1 'space.before.pages := + #0 'only.start.page := + #0 'wave.dash.in.pages := + #1 'show.urldate := + #1 'show.url := + #1 'show.doi := + #1 'show.preprint := + #0 'show.note := + #0 'show.english.translation := + #1 'end.with.period := + #1 'lang.zh.order := + #2 'lang.ja.order := + #3 'lang.en.order := + #4 'lang.ru.order := + #5 'lang.other.order := +} + +ENTRY + { address + archivePrefix + author + booktitle + date + doi + edition + editor + eprint + eprinttype + entrysubtype + howpublished + institution + journal + journaltitle + key + langid + language + location + mark + medium + note + number + organization + pages + publisher + school + series + shortjournal + title + translation + translator + url + urldate + volume + year + } + { entry.lang entry.is.electronic is.pure.electronic entry.numbered } + { label extra.label sort.label short.label short.list entry.mark entry.url } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } + +INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } + +INTEGERS { charptr len } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.slash := + #3 'lang.zh := + #4 'lang.ja := + #1 'lang.en := + #2 'lang.ru := + #0 'lang.other := +} + +FUNCTION {bbl.anonymous} +{ entry.lang lang.zh = + { "佚名" } + { "Anon" } + if$ +} + +FUNCTION {bbl.space} +{ entry.lang lang.zh = + { "\ " } + { " " } + if$ +} + +FUNCTION {bbl.and} +{ "" } + +FUNCTION {bbl.et.al} +{ entry.lang lang.zh = + { "等" } + { entry.lang lang.ja = + { "他" } + { entry.lang lang.ru = + { "идр" } + { "et~al." } + if$ + } + if$ + } + if$ +} + +FUNCTION {citation.and} +{ terms.in.macro + { "{\biband}" } + 'bbl.and + if$ +} + +FUNCTION {citation.et.al} +{ terms.in.macro + { "{\bibetal}" } + 'bbl.et.al + if$ +} + +FUNCTION {bbl.colon} { ": " } + +FUNCTION {bbl.pages.colon} +{ space.before.pages + { ": " } + { ":\allowbreak " } + if$ +} + +FUNCTION {bbl.wide.space} { "\quad " } + +FUNCTION {bbl.slash} { "//\allowbreak " } + +FUNCTION {bbl.sine.loco} +{ entry.lang lang.zh = + { "[出版地不详]" } + { "[S.l.]" } + if$ +} + +FUNCTION {bbl.sine.nomine} +{ entry.lang lang.zh = + { "[出版者不详]" } + { "[s.n.]" } + if$ +} + +FUNCTION {bbl.sine.loco.sine.nomine} +{ entry.lang lang.zh = + { "[出版地不详: 出版者不详]" } + { "[S.l.: s.n.]" } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +STRINGS { x y } + +FUNCTION {contains} +{ 'y := + 'x := + y text.length$ 'len := + x text.length$ len - #1 + 'charptr := + { charptr #0 > + x charptr len substring$ y = not + and + } + { charptr #1 - 'charptr := } + while$ + charptr #0 > +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { bbl.slash * write$ + newline$ + } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.after} +{ 't := + duplicate$ empty$ + 'pop$ + { 's := + output.state mid.sentence = + { t * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { bbl.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s + } + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry} +{ end.with.period + 'add.period$ + 'skip$ + if$ + write$ + show.english.translation entry.lang lang.zh = and + { ")" + write$ + } + 'skip$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.block 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ + } + if$ +} + +FUNCTION {new.slash} +{ output.state before.all = + 'skip$ + { component.part.label "slash" = + { after.slash 'output.state := } + { new.block + component.part.label "in" = + { entry.lang lang.en = + { "In: " output + write$ + "" + before.all 'output.state := + } + 'skip$ + if$ + } + 'skip$ + if$ + } + 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$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {format.btitle} +{ italic.book.title + entry.lang lang.en = and + 'emphasize + 'skip$ + if$ +} + +INTEGERS { byte second.byte } + +INTEGERS { char.lang tmp.lang } + +STRINGS { tmp.str } + +FUNCTION {get.str.lang} +{ 'tmp.str := + lang.other 'tmp.lang := + #1 'charptr := + tmp.str text.length$ #1 + 'len := + { charptr len < } + { tmp.str charptr #1 substring$ chr.to.int$ 'byte := + byte #128 < + { charptr #1 + 'charptr := + byte #64 > byte #91 < and byte #96 > byte #123 < and or + { lang.en 'char.lang := } + { lang.other 'char.lang := } + if$ + } + { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := + byte #224 < + { charptr #2 + 'charptr := + byte #207 > byte #212 < and + byte #212 = second.byte #176 < and or + { lang.ru 'char.lang := } + { lang.other 'char.lang := } + if$ + } + { byte #240 < + { charptr #3 + 'charptr := + byte #227 > byte #234 < and + { lang.zh 'char.lang := } + { byte #227 = + { second.byte #143 > + { lang.zh 'char.lang := } + { second.byte #128 > second.byte #132 < and + { lang.ja 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + { byte #239 = + second.byte #163 > second.byte #172 < and and + { lang.zh 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + if$ + } + { charptr #4 + 'charptr := + byte #240 = second.byte #159 > and + { lang.zh 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + if$ + } + if$ + char.lang tmp.lang > + { char.lang 'tmp.lang := } + 'skip$ + if$ + } + while$ + tmp.lang +} + +FUNCTION {check.entry.lang} +{ author field.or.null + title field.or.null * + get.str.lang +} + +STRINGS { entry.langid } + +FUNCTION {set.entry.lang} +{ "" 'entry.langid := + language empty$ not + { language 'entry.langid := } + 'skip$ + if$ + langid empty$ not + { langid 'entry.langid := } + 'skip$ + if$ + entry.langid empty$ + { check.entry.lang } + { entry.langid "english" = entry.langid "american" = or entry.langid "british" = or + { lang.en } + { entry.langid "chinese" = + { lang.zh } + { entry.langid "japanese" = + { lang.ja } + { entry.langid "russian" = + { lang.ru } + { check.entry.lang } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + 'entry.lang := +} + +FUNCTION {set.entry.numbered} +{ type$ "patent" = + type$ "standard" = or + type$ "techreport" = or + { #1 'entry.numbered := } + { #0 'entry.numbered := } + if$ +} + +INTEGERS { nameptr namesleft numnames name.lang } + +FUNCTION {format.name} +{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t "others" = + { bbl.et.al } + { t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}{ f{~}}" format.name$ + uppercase.name + { "u" change.case$ } + 'skip$ + if$ + t #1 "{, jj}" format.name$ * + } + { t #1 "{ll}{ff}" format.name$ } + if$ + } + if$ +} + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + "" + numnames 'namesleft := + { namesleft #0 > } + { s nameptr format.name bbl.et.al = + numnames bibliography.et.al.min #1 - > nameptr bibliography.et.al.use.first > and or + { ", " * + bbl.et.al * + #1 'namesleft := + } + { nameptr #1 > + { namesleft #1 = bbl.and "" = not and + { bbl.and * } + { ", " * } + if$ + } + 'skip$ + if$ + s nameptr format.name * + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ not + { author format.names } + { "empty author in " cite$ * warning$ + bbl.anonymous + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names } + if$ +} + +FUNCTION {format.translators} +{ translator empty$ + { "" } + { translator format.names + entry.lang lang.zh = + { translator num.names$ #3 > + { "译" * } + { ", 译" * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.full + { type$ "collection" = + type$ "proceedings" = + or + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label ")" * + make.full.names duplicate$ short.list = + { pop$ } + { duplicate$ "]" contains + { "{" swap$ * "}" * } + 'skip$ + if$ + * + } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {change.sentence.case} +{ entry.lang lang.en = + { "t" change.case$ } + 'skip$ + if$ +} + +FUNCTION {add.link} +{ url empty$ not + { "\href{" url * "}{" * swap$ * "}" * } + { doi empty$ not + { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered number empty$ not and + { bbl.colon * + type$ "patent" = show.patent.country and + { address empty$ not + { address * ", " * } + { location empty$ not + { location * ", " * } + { entry.lang lang.zh = + { "中国" * ", " * } + 'skip$ + if$ + } + if$ + } + if$ + } + 'skip$ + if$ + number * + } + 'skip$ + if$ + link.title + 'add.link + 'skip$ + if$ + } + if$ +} + +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 {is.digit} +{ duplicate$ empty$ + { pop$ #0 } + { chr.to.int$ + duplicate$ "0" chr.to.int$ < + { pop$ #0 } + { "9" chr.to.int$ > + { #0 } + { #1 } + if$ + } + if$ + } + if$ +} + +FUNCTION {is.number} +{ 's := + s empty$ + { #0 } + { s text.length$ 'charptr := + { charptr #0 > + s charptr #1 substring$ is.digit + and + } + { charptr #1 - 'charptr := } + while$ + charptr not + } + if$ +} + +FUNCTION {format.volume} +{ volume empty$ not + { volume is.number + { entry.lang lang.zh = + { "第 " volume * " 卷" * } + { "Vol." volume tie.or.space.connect } + if$ + } + { volume } + if$ + } + { "" } + if$ +} + +FUNCTION {format.number} +{ number empty$ not + { number is.number + { entry.lang lang.zh = + { "第 " number * " 册" * } + { "No." number tie.or.space.connect } + if$ + } + { number } + if$ + } + { "" } + if$ +} + +FUNCTION {format.volume.number} +{ volume empty$ not + { format.volume } + { format.number } + if$ +} + +FUNCTION {format.title.vol.num} +{ title + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered + { number empty$ not + { bbl.colon * number * } + 'skip$ + if$ + } + { format.volume.number 's := + s empty$ not + { bbl.colon * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.series.vol.num.title} +{ format.volume.number 's := + series empty$ not + { series + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered + { bbl.wide.space * } + { bbl.colon * + s empty$ not + { s * bbl.wide.space * } + 'skip$ + if$ + } + if$ + title * + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered number empty$ not and + { bbl.colon * number * } + 'skip$ + if$ + } + { format.title.vol.num } + if$ + format.btitle + link.title + 'add.link + 'skip$ + if$ +} + +FUNCTION {format.booktitle.vol.num} +{ booktitle + entry.numbered + 'skip$ + { format.volume.number 's := + s empty$ not + { bbl.colon * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.series.vol.num.booktitle} +{ format.volume.number 's := + series empty$ not + { series bbl.colon * + entry.numbered not s empty$ not and + { s * bbl.wide.space * } + 'skip$ + if$ + booktitle * + } + { format.booktitle.vol.num } + if$ + format.btitle +} + +FUNCTION {remove.period} +{ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ 'tmp.str := + tmp.str "." = not + { s tmp.str * 's := } + 'skip$ + if$ + t #2 global.max$ substring$ 't := + } + while$ + s +} + +FUNCTION {abbreviate} +{ remove.period + 't := + t "l" change.case$ 's := + "" + s "physical review letters" = + { "Phys Rev Lett" } + 'skip$ + if$ + 's := + s empty$ + { t } + { pop$ s } + if$ +} + +FUNCTION {get.journal.title} +{ short.journal + { shortjournal empty$ not + { shortjournal } + { journal empty$ not + { journal abbreviate } + { journaltitle empty$ not + { journaltitle abbreviate } + { "" } + if$ + } + if$ + } + if$ + } + { journal empty$ not + { journal } + { journaltitle empty$ not + { journaltitle } + { shortjournal empty$ not + { shortjournal } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {check.arxiv.preprint} +{ #1 #5 substring$ "l" change.case$ "arxiv" = + { #1 } + { #0 } + if$ +} + +FUNCTION {format.journal} +{ get.journal.title + duplicate$ empty$ not + { italic.journal entry.lang lang.en = and + 'emphasize + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {set.entry.mark} +{ entry.mark empty$ not + 'pop$ + { mark empty$ not + { pop$ mark 'entry.mark := } + { 'entry.mark := } + if$ + } + if$ +} + +FUNCTION {format.mark} +{ show.mark + { entry.mark + show.medium.type + { medium empty$ not + { "/" * medium * } + { entry.is.electronic + { "/OL" * } + 'skip$ + if$ + } + if$ + } + 'skip$ + if$ + 'entry.mark := + space.before.mark + { " " } + { "\allowbreak" } + if$ + "[" * entry.mark * "]" * + } + { "" } + if$ +} + +FUNCTION {num.to.ordinal} +{ duplicate$ text.length$ 'charptr := + duplicate$ charptr #1 substring$ 's := + s "1" = + { "st" * } + { s "2" = + { "nd" * } + { s "3" = + { "rd" * } + { "th" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { edition is.number + { edition "1" = not + { entry.lang lang.zh = + { edition " 版" * } + { edition num.to.ordinal " ed." * } + if$ + } + 'skip$ + if$ + } + { entry.lang lang.en = + { edition change.sentence.case 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." * } + if$ + } + { edition } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.publisher} +{ publisher empty$ not + { publisher } + { school empty$ not + { school } + { organization empty$ not + { organization } + { institution empty$ not + { institution } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.address.publisher} +{ address empty$ not + { address } + { location empty$ not + { location } + { "" } + if$ + } + if$ + duplicate$ empty$ not + { format.publisher empty$ not + { bbl.colon * format.publisher * } + { entry.is.electronic not show.missing.address.publisher and + { bbl.colon * bbl.sine.nomine * } + 'skip$ + if$ + } + if$ + } + { pop$ + entry.is.electronic not show.missing.address.publisher and + { format.publisher empty$ not + { bbl.sine.loco bbl.colon * format.publisher * } + { bbl.sine.loco.sine.nomine } + if$ + } + { format.publisher empty$ not + { format.publisher } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {extract.before.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr len < + s charptr #1 substring$ "-" = + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {extract.before.slash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "/" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.slash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + s charptr #1 substring$ "/" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr len < + s charptr #1 substring$ "-" = + s charptr #1 substring$ "/" = + or + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {format.year} +{ year empty$ not + { year extract.before.slash extra.label * } + { date empty$ not + { date extract.before.dash extra.label * } + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ + urldate empty$ not + { "[" urldate extract.before.dash * extra.label * "]" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.periodical.year} +{ year empty$ not + { year extract.before.slash + "--" * + year extract.after.slash + duplicate$ empty$ + 'pop$ + { * } + if$ + } + { date empty$ not + { date extract.before.dash } + { "empty year in " cite$ * warning$ + urldate empty$ not + { "[" urldate extract.before.dash * "]" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.date} +{ date empty$ not + { type$ "patent" = type$ "newspaper" = or + { date } + { entrysubtype empty$ not + { type$ "article" = entrysubtype "newspaper" = and + { date } + { format.year } + if$ + } + { format.year } + if$ + } + if$ + } + { year empty$ not + { format.year } + { "" } + if$ + } + if$ +} + +FUNCTION {format.editdate} +{ date empty$ not + { "\allowbreak(" date * ")" * } + { "" } + if$ +} + +FUNCTION {format.urldate} +{ show.urldate show.url and entry.url empty$ not and + is.pure.electronic or + urldate empty$ not and + { "\allowbreak[" urldate * "]" * } + { "" } + if$ +} + +FUNCTION {hyphenate} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { wave.dash.in.pages + { "~" * } + { "-" * } + if$ + { t #1 #1 substring$ "-" = } + { t #2 global.max$ substring$ 't := } + while$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages hyphenate } + if$ +} + +FUNCTION {format.extracted.pages} +{ pages empty$ + { "" } + { pages + only.start.page + 'extract.before.dash + 'hyphenate + if$ + } + if$ +} + +FUNCTION {format.journal.volume} +{ volume empty$ not + { bold.journal.volume + { "\textbf{" volume * "}" * } + { volume } + if$ + } + { "" } + if$ +} + +FUNCTION {format.journal.number} +{ number empty$ not + { "\allowbreak (" number * ")" * } + { "" } + if$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + { "" } + { format.extracted.pages } + if$ +} + +FUNCTION {format.periodical.year.volume.number} +{ year empty$ not + { year extract.before.slash } + { "empty year in periodical " cite$ * warning$ } + if$ + volume empty$ not + { ", " * volume extract.before.dash * } + 'skip$ + if$ + number empty$ not + { "\allowbreak (" * number extract.before.dash * ")" * } + 'skip$ + if$ + "--" * + year extract.after.slash empty$ + volume extract.after.dash empty$ and + number extract.after.dash empty$ and not + { year extract.after.slash empty$ not + { year extract.after.slash * } + { year extract.before.slash * } + if$ + volume empty$ not + { ", " * volume extract.after.dash * } + 'skip$ + if$ + number empty$ not + { "\allowbreak (" * number extract.after.dash * ")" * } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {check.url} +{ url empty$ not + { "\url{" url * "}" * 'entry.url := + #1 'entry.is.electronic := + } + { howpublished empty$ not + { howpublished #1 #5 substring$ "\url{" = + { howpublished 'entry.url := + #1 'entry.is.electronic := + } + 'skip$ + if$ + } + { note empty$ not + { note #1 #5 substring$ "\url{" = + { note 'entry.url := + #1 'entry.is.electronic := + } + 'skip$ + if$ + } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {output.url} +{ show.url is.pure.electronic or + entry.url empty$ not and + { new.block + entry.url output + } + 'skip$ + if$ +} + +FUNCTION {check.doi} +{ doi empty$ not + { #1 'entry.is.electronic := } + 'skip$ + if$ +} + +FUNCTION {is.in.url} +{ 's := + s empty$ + { #1 } + { entry.url empty$ + { #0 } + { s text.length$ 'len := + entry.url text.length$ 'charptr := + { entry.url charptr len substring$ s = not + charptr #0 > + and + } + { charptr #1 - 'charptr := } + while$ + charptr + } + if$ + } + if$ +} + +FUNCTION {format.doi} +{ "" + doi empty$ not + { "" 's := + doi 't := + #0 'numnames := + { t empty$ not} + { t #1 #1 substring$ 'tmp.str := + tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or + { t #2 #1 substring$ empty$ + { s tmp.str * 's := } + 'skip$ + if$ + s empty$ s is.in.url or + 'skip$ + { numnames #1 + 'numnames := + numnames #1 > + { ", " * } + { "DOI: " * } + if$ + "\doi{" s * "}" * * + } + if$ + "" 's := + } + { s tmp.str * 's := } + if$ + t #2 global.max$ substring$ 't := + } + while$ + } + 'skip$ + if$ +} + +FUNCTION {output.doi} +{ doi empty$ not show.doi and + show.english.translation entry.lang lang.zh = and not and + { new.block + format.doi output + } + 'skip$ + if$ +} + +FUNCTION {check.electronic} +{ "" 'entry.url := + #0 'entry.is.electronic := + 'check.doi + 'skip$ + if$ + 'check.url + 'skip$ + if$ + medium empty$ not + { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or + { #1 'entry.is.electronic := } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {format.eprint} +{ archivePrefix empty$ not + { archivePrefix } + { eprinttype empty$ not + { archivePrefix } + { "" } + if$ + } + if$ + 's := + s empty$ not + { s ": \eprint{" * + url empty$ not + { url } + { "https://" s "l" change.case$ * ".org/abs/" * eprint * } + if$ + * "}{" * + eprint * "}" * + } + { eprint } + if$ +} + +FUNCTION {output.eprint} +{ show.preprint eprint empty$ not and + { new.block + format.eprint output + } + 'skip$ + if$ +} + +FUNCTION {format.note} +{ note empty$ not show.note and + { note } + { "" } + if$ +} + +FUNCTION {output.translation} +{ show.english.translation entry.lang lang.zh = and + { translation empty$ not + { translation } + { "[English translation missing!]" } + if$ + " (in Chinese)" * output + write$ + format.doi duplicate$ empty$ not + { newline$ + write$ + } + 'pop$ + if$ + " \\" write$ + newline$ + "(" write$ + "" + before.all 'output.state := + } + 'skip$ + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ + year empty$ + and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {monograph} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + bbl.anonymous + } + if$ + } + if$ + output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.series.vol.num.title "title" output.check + "M" set.entry.mark + format.mark "" output.after + new.block + format.translators output + new.sentence + format.edition output + new.block + format.address.publisher output + year.after.author not + { format.year "year" output.check } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "M" set.entry.mark + format.mark "" output.after + new.block + format.translators output + new.slash + format.editors output + new.block + format.series.vol.num.booktitle "booktitle" output.check + new.block + format.edition output + new.block + format.address.publisher output + year.after.author not + { format.year "year" output.check } + 'skip$ + if$ + format.extracted.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {periodical} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "J" set.entry.mark + format.mark "" output.after + new.block + format.periodical.year.volume.number output + new.block + format.address.publisher output + year.after.author not + { format.periodical.year "year" output.check } + 'skip$ + if$ + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {journal.article} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + title.in.journal + { format.title "title" output.check + entrysubtype empty$ not + { + entrysubtype "newspaper" = + { "N" set.entry.mark } + { "J" set.entry.mark } + if$ + } + { "J" set.entry.mark } + if$ + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.journal "journal" output.check + year.after.author not + { format.date "year" output.check } + 'skip$ + if$ + format.journal.volume output + format.journal.number "" output.after + format.journal.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {patent} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "P" set.entry.mark + format.mark "" output.after + new.block + format.date "year" output.check + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {electronic} +{ #1 #1 check.electronic + #1 'entry.is.electronic := + #1 'is.pure.electronic := + output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.series.vol.num.title "title" output.check + "EB" set.entry.mark + format.mark "" output.after + new.block + format.address.publisher output + year.after.author not + { date empty$ + { format.date output } + 'skip$ + if$ + } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.editdate "" output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {preprint} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + bbl.anonymous + } + if$ + } + if$ + output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + title.in.journal + { format.series.vol.num.title "title" output.check + "A" set.entry.mark + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.translators output + new.sentence + format.edition output + new.block + year.after.author not + { date empty$ + { format.date output } + 'skip$ + if$ + } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.editdate "" output.after + format.urldate "" output.after + output.eprint + output.url + new.block + format.note output + fin.entry +} + +FUNCTION {misc} +{ get.journal.title + duplicate$ empty$ not + { check.arxiv.preprint + 'preprint + 'journal.article + if$ + } + { pop$ + booktitle empty$ not + 'incollection + { publisher empty$ not + 'monograph + { eprint empty$ not archivePrefix empty$ not or + 'preprint + { entry.is.electronic + 'electronic + { + "Z" set.entry.mark + monograph + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + empty.misc.check +} + +FUNCTION {archive} +{ "A" set.entry.mark + misc +} + +FUNCTION {article} { misc } + +FUNCTION {book} { monograph } + +FUNCTION {booklet} { book } + +FUNCTION {collection} +{ "G" set.entry.mark + monograph +} + +FUNCTION {database} +{ "DB" set.entry.mark + electronic +} + +FUNCTION {dataset} +{ "DS" set.entry.mark + electronic +} + +FUNCTION {inbook} { book } + +FUNCTION {inproceedings} +{ "C" set.entry.mark + incollection +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {legislation} { archive } + +FUNCTION {map} +{ "CM" set.entry.mark + misc +} + +FUNCTION {manual} { monograph } + +FUNCTION {mastersthesis} +{ "D" set.entry.mark + monograph +} + +FUNCTION {newspaper} +{ "N" set.entry.mark + article +} + +FUNCTION {online} +{ "EB" set.entry.mark + electronic +} + +FUNCTION {phdthesis} { mastersthesis } + +FUNCTION {proceedings} +{ "C" set.entry.mark + monograph +} + +FUNCTION {software} +{ "CP" set.entry.mark + electronic +} + +FUNCTION {standard} +{ "S" set.entry.mark + misc +} + +FUNCTION {techreport} +{ "R" set.entry.mark + misc +} + +FUNCTION {unpublished} { misc } + +FUNCTION {default.type} { misc } + +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"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.name} +{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t "others" = + { citation.et.al } + { t get.str.lang 'name.lang := + name.lang lang.zh = name.lang lang.ja = or + { t #1 "{ll}{ff}" format.name$ } + { t #1 "{vv~}{ll}" format.name$ } + if$ + } + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 format.lab.name 'short.label := + #1 'nameptr := + s num.names$ 'numnames := + "" + numnames 'namesleft := + { namesleft #0 > } + { s nameptr format.lab.name citation.et.al = + numnames citation.et.al.min #1 - > nameptr citation.et.al.use.first > and or + { bbl.space * + citation.et.al * + #1 'namesleft := + } + { nameptr #1 > + { namesleft #1 = citation.and "" = not and + { citation.and * } + { ", " * } + if$ + } + 'skip$ + if$ + s nameptr format.lab.name * + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ "" 'short.label := + type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "collection" = + type$ "proceedings" = + or + { editor empty$ not + 'editor.key.organization.label + 'author.key.organization.label + if$ + } + 'author.key.label + if$ + } + if$ + 'short.list := + short.label empty$ + { short.list 'short.label := } + 'skip$ + if$ +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list "]" contains + { "{" short.list * "}" * } + { short.list } + if$ + "(" + * + format.year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + duplicate$ "]" contains + { "{" swap$ * "}" * } + 'skip$ + if$ + * + 'label := + short.label + "(" + * + format.year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'short.label := +} + +FUNCTION {sort.language.label} +{ entry.lang lang.zh = + { lang.zh.order } + { entry.lang lang.ja = + { lang.ja.order } + { entry.lang lang.en = + { lang.en.order } + { entry.lang lang.ru = + { lang.ru.order } + { lang.other.order } + if$ + } + if$ + } + if$ + } + if$ + #64 + + int.to.chr$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { numnames #2 > nameptr #2 = and + { "zz" * year field.or.null * " " * } + 'skip$ + if$ + t sortify * + } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {anonymous.sort} +{ entry.lang lang.zh = + { "yi4 ming2" } + { "anon" } + if$ +} + +FUNCTION {warn.empty.key} +{ entry.lang lang.zh = + { "empty key in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {author.sort} +{ key empty$ + { warn.empty.key + author empty$ + { anonymous.sort } + { author sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {author.editor.sort} +{ key empty$ + { warn.empty.key + author empty$ + { editor empty$ + { anonymous.sort } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {author.organization.sort} +{ key empty$ + { warn.empty.key + author empty$ + { organization empty$ + { anonymous.sort } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {editor.organization.sort} +{ key empty$ + { warn.empty.key + editor empty$ + { organization empty$ + { anonymous.sort } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {presort} +{ set.entry.lang + set.entry.numbered + show.url show.doi check.electronic + #0 'is.pure.electronic := + calc.label + label sortify + " " + * + sort.language.label + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "collection" = + type$ "proceedings" = + or + 'editor.organization.sort + 'author.sort + if$ + } + if$ + * + " " + * + year field.or.null sortify + * + " " + * + cite$ + * + #1 entry.max$ substring$ + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +STRINGS { longest.label last.label next.extra last.extra.label } + +INTEGERS { longest.label.width number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'number.label := + "" 'last.extra.label := +} + +FUNCTION {forward.pass} +{ + last.label short.label = + { "" 'extra.label := + last.extra.label text.length$ 'charptr := + { last.extra.label charptr #1 substring$ "z" = + charptr #0 > and + } + { "a" extra.label * 'extra.label := + charptr #1 - 'charptr := + } + while$ + charptr #0 > + { last.extra.label charptr #1 substring$ chr.to.int$ #1 + int.to.chr$ + extra.label * 'extra.label := + last.extra.label #1 charptr #1 - substring$ + extra.label * 'extra.label := + } + { "a" extra.label * 'extra.label := } + if$ + extra.label 'last.extra.label := + } + { "a" 'last.extra.label := + "" 'extra.label := + short.label 'last.label := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ + next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + terms.in.macro + { "\providecommand{\biband}{和}" + write$ newline$ + "\providecommand{\bibetal}{等}" + write$ newline$ + } + 'skip$ + if$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\expandafter\ifx\csname urlstyle\endcsname\relax\else" + write$ newline$ + " \urlstyle{same}\fi" + write$ newline$ + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \DeclareUrlCommand\doi{\urlstyle{rm}}" + write$ newline$ + " \def\eprint#1#2{#2}" + write$ newline$ + "\else" + write$ newline$ + " \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}" + write$ newline$ + " \let\eprint\href" + write$ newline$ + "\fi" + write$ newline$ + } + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +READ + +EXECUTE {init.state.consts} + +EXECUTE {load.config} + +ITERATE {presort} + +SORT + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +ITERATE {bib.sort.order} + +SORT + +EXECUTE {begin.bib} + +ITERATE {call.type$} + +EXECUTE {end.bib} From 23b804ea1bf4212689fb672d95a2d84b0af4b232 Mon Sep 17 00:00:00 2001 From: liziwl Date: Sun, 8 Sep 2024 20:43:21 +0800 Subject: [PATCH 3/8] add --- data/chap04.tex | 45 ++++++++++++++++- sustech-setup.tex | 7 +-- sustechthesis.dtx | 124 ++++++++++++++++++++++++++++++++++++---------- 3 files changed, 145 insertions(+), 31 deletions(-) diff --git a/data/chap04.tex b/data/chap04.tex index 350679f..f2974b7 100644 --- a/data/chap04.tex +++ b/data/chap04.tex @@ -8,16 +8,23 @@ \chapter{引用文献的标注} \section{顺序编码制} -依学校样式规定,一般使用 \cs{cite},即序号置于方括号中,引文页码会放在括号外。统一处引用的连续序号会自动用短横线连接。如多次引用同一文献,可能需要标注页码,例如:引用第二页\cite[2]{zhangkun1994},引用第五页\cite[5]{zhangkun1994}。 +\thusetup{ + cite-style = super, +} +% \citestyle{super} % 全局上标数字模式 +% \bibliographystyle{sustechthesis-numeric} + +在顺序编码制下,默认的 \cs{cite} 命令同 \cs{citep} 一样,即序号置于方括号中,引文页码会放在括号外。统一处引用的连续序号会自动用短横线连接。如多次引用同一文献,可能需要标注页码,例如:引用第二页\cite[2]{zhangkun1994},引用第五页\cite[5]{zhangkun1994}。 \begin{tabular}{l@{\quad$\Rightarrow$\quad}l} \verb|\cite{zhangkun1994}| & \cite{zhangkun1994} {\kaishu 不带页码的上标引用} \\ + \verb|\citet{zhangkun1994}| & \citet{zhangkun1994} \\ + \verb|\citep{zhangkun1994}| & \citep{zhangkun1994} \\ \verb|\cite[42]{zhangkun1994}| & \cite[42]{zhangkun1994} {\kaishu 手动带页码的上标引用} \\ \verb|\cite{zhangkun1994,zhukezhen1973}| & \cite{zhangkun1994,zhukezhen1973} {\kaishu 一次多篇文献的上标引用} \\ \end{tabular} - 注意,引文参考文献的每条都要在正文中标注 \cite{zhangkun1994,zhukezhen1973,dupont1974bone,zhengkaiqing1987,% jiangxizhou1980,jianduju1994,merkt1995rotational,mellinger1996laser,% @@ -34,6 +41,40 @@ \section{顺序编码制} 如参考文献中需要使用上标或者下标,使用数学环境书写 \verb|$\mathrm{Ba}_{3}\mathrm{CoSb}_{2}\mathrm{O}_{9}$|,例如该文献\cite{kamiya2018nature}。根据 \pkg{gbt7714} 规定著者姓名自动转为大写。西文的题名、期刊名的大小写不自动处理,需要自行处理以符合信息资源本身文种的习惯用法。 +\section{著者-出版年制} + +著者-出版年制下的 \cs{cite} 跟 \cs{citet} 一样。 + +\thusetup{ + cite-style = author-year, +} +\begin{tabular}{l@{\quad$\Rightarrow$\quad}l} + \verb|\cite{zhangkun1994}| & \cite{zhangkun1994} \\ + \verb|\citet{zhangkun1994}| & \citet{zhangkun1994} \\ + \verb|\citep{zhangkun1994}| & \citep{zhangkun1994} \\ + \verb|\cite[42]{zhangkun1994}| & \cite[42]{zhangkun1994} \\ + \verb|\citep{zhangkun1994,zhukezhen1973}| & \citep{zhangkun1994,zhukezhen1973} \\ +\end{tabular} + +\vskip 2ex +% \thusetup{ +% cite-style = super, +% } +注意,引文参考文献的每条都要在正文中标注 +\cite{zhangkun1994,zhukezhen1973,dupont1974bone,zhengkaiqing1987,% + jiangxizhou1980,jianduju1994,merkt1995rotational,mellinger1996laser,% + bixon1996dynamics,mahui1995,carlson1981two,taylor1983scanning,% + taylor1981study,shimizu1983laser,atkinson1982experimental,% + kusch1975perturbations,guangxi1993,huosini1989guwu,wangfuzhi1865songlun,% + zhaoyaodong1998xinshidai,biaozhunhua2002tushu,chubanzhuanye2004,% + who1970factors,peebles2001probability,baishunong1998zhiwu,% + weinstein1974pathogenic,hanjiren1985lun,dizhi1936dizhi,% + tushuguan1957tushuguanxue,aaas1883science,fugang2000fengsha,% + xiaoyu2001chubanye,oclc2000about,scitor2000project% +}。 + + +\section{条目编写} \subsection{支持三级目录显示} diff --git a/sustech-setup.tex b/sustech-setup.tex index 0f1fce9..d073cba 100644 --- a/sustech-setup.tex +++ b/sustech-setup.tex @@ -121,10 +121,11 @@ %%%%%% 顺序编码制的文献引用形式 %%%%%% 参考文献编译方式二选一,不要同时开启。 %%%% 选择一:使用 BibTeX + natbib 宏包 -\usepackage[sort&compress]{gbt7714} -\citestyle{super} % 全局上标数字模式 -% \citestyle{numbers} % 全局行内数字模式,在写作指南2022年8月23日版本已废弃, 并决定中英文都采用上标数字格式 +\usepackage[sort&compress]{natbib} +% \citestyle{super} % 全局上标数字模式 \bibliographystyle{sustechthesis-numeric} +% \citestyle{author-year} % 全局著者-出版年制模式 +% \bibliographystyle{sustechthesis-author-year} %%%% 选择二:使用 BibLaTeX 宏包(兼容性不佳,不太推荐) % \usepackage[backend=biber,style=gb7714-2015,gbalign=left]{biblatex} diff --git a/sustechthesis.dtx b/sustechthesis.dtx index 1cde580..6b41420 100644 --- a/sustechthesis.dtx +++ b/sustechthesis.dtx @@ -3702,6 +3702,7 @@ Thesis for the Professional Degree of \degree@level@en@noun \ of \thu@degree@dom Thesis for the Degree of \degree@level@en@noun \ of \thu@degree@domain@en% \fi% } + \newcommand\thu@option@supervisor@item{ \ifx\thu@associate@supervisor\@empty\else \makebox[6em][s]{\heiti {副指导教师}} & \thu@associate@supervisor\\ @@ -3789,22 +3790,22 @@ Thesis for the Degree of \degree@level@en@noun \ of \thu@degree@domain@en% hmargin = 3cm, }% \thispagestyle{empty}% - {\noindent \xiaosi - \renewcommand\arraystretch{1.25} - \begin{tabular}{@{}l@{}} - Classified Index: \thu@natclassifiedindex\\ - U.D.C: \thu@intclassifiedindex - \end{tabular}} + % {\noindent \xiaosi + % \renewcommand\arraystretch{1.25} + % \begin{tabular}{@{}l@{}} + % Classified Index: \thu@natclassifiedindex\\ + % U.D.C: \thu@intclassifiedindex + % \end{tabular}} \begin{center} - \vspace{2.5cm} + % \vspace{2.5cm} - \parbox[t]{30em}{ - \centering - \fontsize{18bp}{25.875bp}\selectfont - \thu@subject@en} - \par + % \parbox[t]{30em}{ + % \centering + % \fontsize{18bp}{25.875bp}\selectfont + % \thu@subject@en} + % \par \vspace{1.5cm} \parbox[t]{30em}{ @@ -3821,19 +3822,52 @@ Thesis for the Degree of \degree@level@en@noun \ of \thu@degree@domain@en% \par \vfill - {\sihao% - \renewcommand\arraystretch{1.3} - % 手动调整使得视觉接近 - \hspace*{2em} - \begin{tabular}{@{}m{\sustech@titlepage@left@column@width}m{0.5\textwidth}@{}} - \thu@info@item@sustech{Candidate:}{\thu@author@en}\\ - \thu@info@item@sustech{Supervisor:}{\thu@supervisor@en}\\ - \thu@option@supervisor@item@en - \thu@info@item@sustech{\zhuanye@en:}{\thu@discipline@en}\\ - \thu@info@item@sustech{Date of Defence:}{\thu@format@date{\thu@date@en@short}{\thu@defense@date}}\\ - \thu@info@item@sustech{Affiliation:}{\thu@department@en}\\ - \thu@info@item@sustech{Degree-Conferring-\\Institution:}{Southern University of Science and\\Technology} - \end{tabular}} + { + \sanhao% + A dissertation submitted to\par + Southern University of Science and Technology\par + in partial fulfillment of the requirement\par + for the + \ifthu@degree@type@professional + professional + \fi + degree of\par + \degree@level@en@adj + \ifthu@degree@type@academic + in\par + \thu@discipline@en + \fi + % \thu@degree@name@en\par + } + \vspace{1cm} + { + \sanhao% + by\par + \thu@author@en\par + } + \vspace{1cm} + { + \xiaosan% + Supervisor: \thu@supervisor@en\\ + } + \vfill + { + \sanhao% + \thu@format@date{\thu@date@en@short}{\thu@defense@date} + } + % {\sanhao% + % \renewcommand\arraystretch{1.3} + % % 手动调整使得视觉接近 + % \hspace*{2em} + % \begin{tabular}{@{}m{\sustech@titlepage@left@column@width}m{0.5\textwidth}@{}} + % \thu@info@item@sustech{Candidate:}{\thu@author@en}\\ + % \thu@info@item@sustech{Supervisor:}{\thu@supervisor@en}\\ + % \thu@option@supervisor@item@en + % \thu@info@item@sustech{\zhuanye@en:}{\thu@discipline@en}\\ + % \thu@info@item@sustech{Date of Defence:}{\thu@format@date{\thu@date@en@short}{\thu@defense@date}}\\ + % \thu@info@item@sustech{Affiliation:}{\thu@department@en}\\ + % \thu@info@item@sustech{Degree-Conferring-\\Institution:}{Southern University of Science and\\Technology} + % \end{tabular}} \vspace{3cm} \end{center} @@ -5095,7 +5129,23 @@ Thesis for the Degree of \degree@level@en@noun \ of \thu@degree@domain@en% % \subsection{参考文献} % \label{sec:ref} % -% \subsubsection{BibTeX\pkg{natbib} 宏包} +% 参考文献的格式根据用户选择的 \BibTeX{}/BibLaTeX 分别进行配置, +% 所以使用 \pkg{filehook} 的方式。 +% +% 设置 \option{cite-style} 的接口,只对 \BibTeX{} 的编译方式有效。 +% \begin{macrocode} +\thu@define@key{ + cite-style = { + name = cite@style, + choices = { + super, + author-year, + } + } +} +% \end{macrocode} +% +% \subsubsection{BibTeX + \pkg{natbib} 宏包} % % \BibTeX{} 和 \pkg{natbib} 宏包的配置。 % \begin{macrocode} @@ -5111,6 +5161,28 @@ Thesis for the Degree of \degree@level@en@noun \ of \thu@degree@domain@en% % \end{macrocode} % \end{macro} % +% 几种种引用样式,与 \file{bst} 文件名保持一致, +% 这样在使用 \cs{bibliographystyle} 选择参考文献表的样式时也会设置对应的引用样式。 +% \begin{macrocode} +% \newcommand\bibstyle@super{% +% \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} +% \newcommand\bibstyle@inline{% +% \bibpunct{[}{]}{,}{n}{,}{,}} +% \@namedef{bibstyle@author-year}{% +% \bibpunct{(}{)}{;}{a}{,}{,}} +% \end{macrocode} +% +% \begin{macrocode} +\thu@option@hook{cite-style}{\@nameuse{bibstyle@\thu@cite@style}} +% \end{macrocode} +% +% 几种种引用样式,与 \file{bst} 文件名保持一致, +% 这样在使用 \cs{bibliographystyle} 选择参考文献表的样式时也会设置对应的引用样式。 +% \begin{macrocode} +\@namedef{bibstyle@sustechthesis-numeric}{\citestyle{super}} +\@namedef{bibstyle@sustechthesis-author-year}{\citestyle{author-year}} +% \end{macrocode} +% % 参考文献表的正文部分用五号字。 % 行距采用固定值 16 磅,段前空 3 磅,段后空 0 磅。 % From 95352c8a660e07baca42970056bfdc4aebb30851 Mon Sep 17 00:00:00 2001 From: liziwl Date: Sun, 8 Sep 2024 21:13:11 +0800 Subject: [PATCH 4/8] update --- sustechthesis.dtx | 62 +++++++++++++++-------------------------------- 1 file changed, 19 insertions(+), 43 deletions(-) diff --git a/sustechthesis.dtx b/sustechthesis.dtx index 50a1bf5..a79a1cd 100644 --- a/sustechthesis.dtx +++ b/sustechthesis.dtx @@ -3695,7 +3695,6 @@ Thesis for the Professional Degree of \degree@level@en@noun \ of \thu@degree@dom Thesis for the Degree of \degree@level@en@noun \ of \thu@degree@domain@en% \fi% } - \newcommand\thu@option@supervisor@item{ \ifx\thu@associate@supervisor\@empty\else \makebox[6em][s]{\heiti {副指导教师}} & \thu@associate@supervisor\\ @@ -3783,24 +3782,9 @@ Thesis for the Degree of \degree@level@en@noun \ of \thu@degree@domain@en% hmargin = 3cm, }% \thispagestyle{empty}% - % {\noindent \xiaosi - % \renewcommand\arraystretch{1.25} - % \begin{tabular}{@{}l@{}} - % Classified Index: \thu@natclassifiedindex\\ - % U.D.C: \thu@intclassifiedindex - % \end{tabular}} \begin{center} - % \vspace{2.5cm} - - % \parbox[t]{30em}{ - % \centering - % \fontsize{18bp}{25.875bp}\selectfont - % \thu@subject@en} - % \par - - \vspace{1.5cm} \parbox[t]{30em}{ \centering % 22 bp*1.15默认行距比例*1.25行距 = 31.625 @@ -3816,7 +3800,7 @@ Thesis for the Degree of \degree@level@en@noun \ of \thu@degree@domain@en% \vfill { - \sanhao% + \sanhao[1.725]% A dissertation submitted to\par Southern University of Science and Technology\par in partial fulfillment of the requirement\par @@ -3825,44 +3809,28 @@ Thesis for the Degree of \degree@level@en@noun \ of \thu@degree@domain@en% professional \fi degree of\par - \degree@level@en@adj + \degree@level@en@noun \ of \thu@degree@domain@en\par \ifthu@degree@type@academic - in\par - \thu@discipline@en + in\par + \thu@discipline@en\par \fi - % \thu@degree@name@en\par } - \vspace{1cm} + \vspace{3cm} { - \sanhao% + \sanhao[1.725]% by\par \thu@author@en\par } \vspace{1cm} - { - \xiaosan% - Supervisor: \thu@supervisor@en\\ - } - \vfill + \parbox[t][3.37cm][t]{\textwidth}{% + \centering\xiaosan[1.82]% + \thu@titlepage@en@supervisor@sustech + }\par { \sanhao% \thu@format@date{\thu@date@en@short}{\thu@defense@date} } - % {\sanhao% - % \renewcommand\arraystretch{1.3} - % % 手动调整使得视觉接近 - % \hspace*{2em} - % \begin{tabular}{@{}m{\sustech@titlepage@left@column@width}m{0.5\textwidth}@{}} - % \thu@info@item@sustech{Candidate:}{\thu@author@en}\\ - % \thu@info@item@sustech{Supervisor:}{\thu@supervisor@en}\\ - % \thu@option@supervisor@item@en - % \thu@info@item@sustech{\zhuanye@en:}{\thu@discipline@en}\\ - % \thu@info@item@sustech{Date of Defence:}{\thu@format@date{\thu@date@en@short}{\thu@defense@date}}\\ - % \thu@info@item@sustech{Affiliation:}{\thu@department@en}\\ - % \thu@info@item@sustech{Degree-Conferring-\\Institution:}{Southern University of Science and\\Technology} - % \end{tabular}} - \vspace{3cm} - + \vspace{1.65cm} \end{center} \clearpage @@ -4305,6 +4273,14 @@ Thesis for the Degree of \degree@level@en@noun \ of \thu@degree@domain@en% \fi \end{tabular}% } +\newcommand\thu@titlepage@en@supervisor@sustech{% + \begin{tabular}{r@{\makebox[0.71cm][l]{:}}l}% + Supervisor & \thu@supervisor@en \\ + \ifx\thu@associate@supervisor@en\@empty\else + Associate Supervisor & \thu@associate@supervisor@en \\ + \fi + \end{tabular}% +} \newcommand\thu@titlepage@en@date{% \begingroup \sffamily\bfseries\sanhao From a94950ef50bd2a68db4f0362a063acb5b69393ba Mon Sep 17 00:00:00 2001 From: liziwl Date: Fri, 13 Sep 2024 19:27:43 +0800 Subject: [PATCH 5/8] add --- data/chap02.tex | 80 +++++++++++++++++++++++++++++++++++- data/chap04.tex | 102 ++++------------------------------------------ sustech-setup.tex | 4 +- sustechthesis.dtx | 29 ++++++++----- 4 files changed, 106 insertions(+), 109 deletions(-) diff --git a/data/chap02.tex b/data/chap02.tex index 11929f2..095fe9c 100644 --- a/data/chap02.tex +++ b/data/chap02.tex @@ -1,6 +1,6 @@ % !TeX root = ../sustechthesis-example.tex -\chapter{图表示例} +\chapter{图、表及条目示例} \section{插图} @@ -263,7 +263,7 @@ \section{伪代码} \end{algorithm} \newpage -\section{测试} +\section{图表格式测试} 图题在图之下,段前空 6 磅,段后空 12 磅。图整体前后距离未定义,目前默认距离:段前空 12 磅,段后空 12 磅。 @@ -297,3 +297,79 @@ \section{测试} 表后,表后,表后,表后,表后,表后,表后,表后,表后,表后,表后。 \emph{图表前后是否有空行不影响图表与正文之间的距离}。 + + +\section{条目编写} + +\subsection{支持三级目录显示} + +支持三级目录显示 + + +\subsection{条目要求} + +条目要求首行左缩进 2 个汉字符,避免悬挂缩进。如需使用带括号的条目列表,请自行添加 \verb|label=