├── README.md ├── cite.bib ├── img └── 20210731170447.jpg ├── includes ├── section_01.tex ├── section_02.tex └── section_03.tex ├── main.tex ├── oucauthoryear.bst ├── ouclogo.png └── oucthesis.cls /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## 中国海洋大学硕博士学位论文 LaTeX 模板(overleaf & Texpage版) 4 | 5 | 6 | 本模板是中国海洋大学硕博士学位论文 LaTeX 模板。LaTeX是一个流行的编辑科学类文章的工具。 大多数科学类书籍,期刊,文章都采用了LaTeX。 使用这个模板可以使你从无聊的格式限制中解脱出来,从而更专注地阐述自己的想法。 希望本模板能够帮助你入门LaTeX, 如果你有关于本模板的良好意见和建议,请在顶栏的问题(issue)一栏中提出。 7 | 8 | 本项目以 [GeoffreyChen](https://geoch.top) 编写的中国海洋大学的硕博士学位论文 LaTeX 模板为基础,按照最新版的 《[中国海洋大学研究生学位论文书写格式统一要求](http://grad.ouc.edu.cn/39/69/c1660a14697/page.psp)》 的要求编写。 9 | 10 | 学习LaTeX可以参考 Overleaf 的官方教程([Learn LaTeX in 30 minutes](https://cn.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes)),或者在B站学习碗豆老师的45分钟教学视频 “[Latex科研写作入门](https://www.bilibili.com/video/BV1Au411N7Ew/)”。 11 | 12 | 本模板已经帮助2017级以来的多届中国海洋大学硕士、博士毕业生使用,在学生及答辩专家中反馈良好,大家可以放心使用。 13 | 14 |
15 | 16 | 17 | 18 | ## 如何使用 19 | 20 | **本模板在 Overleaf 下测试通过,本地编译尚未测试。** 可以通过链接:https://www.overleaf.com/read/jkrpnmrnmqwz 在线浏览本项目。考虑到 overleaf 服务器在国外,有时不太稳定,推荐大家使用国产软件 Texpage,我们组日常使用感觉比 overleaf 流畅许多,地址:https://texpage.com/ 21 | 22 | ![img](img/20210731170447.jpg) 23 | 24 | 25 | Overleaf 是一个线上 LaTeX 编辑器,可以在不安装任何工具的情况下编写 LaTeX 文档,同时也可以和其他人共享文档,共同编辑。 26 | 27 | 推荐使用 **Overleaf** 使用本模板,具体方法如下: 28 | 29 | 1. 下载模板代码,并压缩成 .zip 文件 30 | 2. 在 Overleaf 中上传这个 .zip 压缩文件以创建一个新 Overleaf 项目 31 | 3. 在 Overleaf 界面左上角点击 "Menu" 32 | - 选择 "Compiler" 为 "XeLaTeX" 33 | - 选择 "TeX Live version" 为 "2019" 或者更新的版本 34 | 4. 使用 Overleaf 编译 35 | 36 | 最近我也在使用 TexPage (https://www.texpage.com/),可以理解为国产版的 Overleaf,对于国内用户支持的要好一些,尤其是云盘同步功能,支持百度网盘和 WebDAV 。另外,遇到问题客服也很给力,发邮件能够12小时以内及时回复帮忙解决问题,大家可以考虑。 37 | 38 |
39 | 40 | 41 | 42 | ## 修改记录 43 | 44 | - 20220221,修改参考文献自动连续:[1] [2] [3] 自动转化为 [1-3] 45 | - 20220115,为方便在 Overleaf 中快速编译,将正文拆分为若干单独文件 46 | - 20220501,修改“关键词”格式,小节不换页(赵政达修改) 47 | - 20230126,考虑到图表标题和正文字体一样大,有时区分不开是正文还是图表标题,因此把图表标题改小一号(高峰修改) 48 | 49 | 50 | 51 | ## 开源许可 52 | 53 | 本项目代码基于 MIT 协议开源 54 | 55 | 学校标志的版权归中国海洋大学所有 56 | 57 | 有任何问题可以随时联系高老师:gaofeng@ouc.edu.cn 58 | 59 | -------------------------------------------------------------------------------- /cite.bib: -------------------------------------------------------------------------------- 1 | @article{knuth84, 2 | author = {Donald E. Knuth}, 3 | title = {Literate Programming}, 4 | journal = {The Computer Journal}, 5 | year = {1984}, 6 | number = {2}, 7 | volume = {27}, 8 | pages = {97--111}, 9 | } 10 | 11 | @book{knuth86a, 12 | author = {Donald E. Knuth}, 13 | title = {The {\TeX}book}, 14 | volume = {A}, 15 | publisher = {Addison-Wesley}, 16 | address = {Reading, MA, USA}, 17 | year = {1986}, 18 | series = {Computers and Typesetting}, 19 | } 20 | 21 | @book{lamport94, 22 | author = {Leslie Lamport}, 23 | title = {{\LaTeX}: a Document Preparation System}, 24 | publisher = {Addison-Wesley}, 25 | address = {Reading, MA, USA}, 26 | edition = {2}, 27 | year = {1994}, 28 | } 29 | 30 | @book{tlc2, 31 | author = {Frank Mittelbach and Michel Goossens and Johannes 32 | Braams and David Carlisle}, 33 | title = {The {\LaTeX} Companion}, 34 | publisher = {Addison-Wesley}, 35 | address = {Reading, MA, USA}, 36 | edition = {2}, 37 | year = {2004}, 38 | } 39 | 40 | @collection{slg, 41 | editor = {孙立广}, 42 | title = {顶级期刊论文摘要汇编(1999--2010)}, 43 | address = {合肥}, 44 | publisher = {中国科学技术大学出版社}, 45 | year = {2016}, 46 | pages = {222}, 47 | } 48 | 49 | @book{lyc, 50 | author = {李泳池}, 51 | title = {张量初步和近代连续介质力学概论}, 52 | edition = {2}, 53 | address = {合肥}, 54 | publisher = {中国科学技术大学出版社}, 55 | year = {2016}, 56 | pages = {61}, 57 | } 58 | 59 | @book{ljs, 60 | author = {刘景双}, 61 | title = {湿地生态系统碳、氮、硫、磷生物地球化学过程}, 62 | address = {合肥}, 63 | publisher = {中国科学技术大学出版社}, 64 | year = {2014}, 65 | } 66 | 67 | @incollection{cgw, 68 | author = {程根伟}, 69 | title = {1998年长江洪水的成因与减灾对策}, 70 | editor = {许厚泽 and 赵其国}, 71 | booktitle = {长江流域洪涝灾害与科技对策}, 72 | address = {北京}, 73 | publisher = {科学出版社}, 74 | year = {1999}, 75 | pages = {26--32}, 76 | } 77 | 78 | @incollection{cjb, 79 | author = {陈晋镳 and 张惠民 and 朱士兴 and 赵震 and 王振刚}, 80 | title = {蓟县震旦亚界研究}, 81 | editor = {中国地质科学院天津地质矿产研究所}, 82 | booktitle = {中国震旦亚界}, 83 | address = {天津}, 84 | publisher = {天津科学技术出版社}, 85 | year = {1980}, 86 | pages = {56--114}, 87 | } 88 | 89 | @article{kqy, 90 | author = {孔庆勇 and 郭红健 and 孔庆和}, 91 | title = {我国科技期刊的金字塔分层模型及发展路径初探}, 92 | journal = {中国科技期刊研究}, 93 | year = {2015}, 94 | volume = {26}, 95 | number = {10}, 96 | pages = {1100--1103}, 97 | } 98 | 99 | @article{yhs, 100 | author = {杨洪升}, 101 | title = {四库馆私家抄校书考略}, 102 | journal = {文献}, 103 | year = {2013}, 104 | number = {1}, 105 | pages = {56--75}, 106 | } 107 | 108 | @article{yx, 109 | author = {于潇 and 刘义 and 柴跃廷 and others}, 110 | title = {互联网药品可信交易环境中主体资质审核备案模式}, 111 | journal = {清华大学学报(自然科学版)}, 112 | year = {2012}, 113 | volume = {52}, 114 | number = {11}, 115 | pages = {1518--1521}, 116 | } 117 | 118 | @newspaper{dwx, 119 | author = {丁文详}, 120 | title = {数字革命与竞争国际化}, 121 | journal = {中国青年报}, 122 | year = {2000}, 123 | date = {2000-11-20}, 124 | number = {15}, 125 | } 126 | 127 | @patent{jxz, 128 | author = {姜锡洲}, 129 | title = {一种温热外敷药制备方案:中国,88105607.3}, 130 | year = {1989}, 131 | date = {1989-07-26}, 132 | } 133 | 134 | @database{wjk, 135 | author = {万锦坤}, 136 | title = {中国大学学报论文文摘(1983--1993)(英文版)}, 137 | medium = {CD}, 138 | address = {北京}, 139 | publisher = {中国大百科全书出版社}, 140 | year = {1996}, 141 | } 142 | 143 | @phdthesis{syw, 144 | author = {孙玉文}, 145 | title = {汉语变调构词研究}, 146 | address = {北京}, 147 | school = {北京大学}, 148 | year = {2000}, 149 | } 150 | 151 | @article{wf, 152 | author = {文富 and 顾丽梅}, 153 | title = {网络时代经济发展战略特征}, 154 | journal = {学术研究}, 155 | year = {2000}, 156 | volume = {21}, 157 | number = {4}, 158 | pages = {35--40}, 159 | } 160 | 161 | @book{xd, 162 | author = {肖度 and others}, 163 | title = {知识时代的企业合作经营}, 164 | address = {北京}, 165 | publisher = {北京大学出版社}, 166 | year = {2000}, 167 | pages = {67--69}, 168 | } 169 | 170 | @techreport{twh, 171 | author = {{The White House}}, 172 | title = {Technology for Economic Growth}, 173 | address = {Washington}, 174 | year = {1993}, 175 | } 176 | 177 | @article{huston, 178 | author = {Hutson, Jeremy M}, 179 | title = {Vibrational dependence of the anisotropic intermolecular 180 | potential of argon-hydrogen chloride}, 181 | journal = {J. Phys. Chem.}, 182 | year = {1992}, 183 | volume = {96}, 184 | number = {11}, 185 | pages = {4237--4247}, 186 | } 187 | -------------------------------------------------------------------------------- /img/20210731170447.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summitgao/OUC-LaTex-master/a340598d04ef9d19c90ee56842de8427e5e70fb9/img/20210731170447.jpg -------------------------------------------------------------------------------- /includes/section_01.tex: -------------------------------------------------------------------------------- 1 | \chapter{简介} 2 | \section{一级标题} 3 | \subsection{二级标题} 4 | 5 | 2017年2月,即便前途未卜,蔡徐坤为了掌握主动权仍决定奋力一搏,向前公司提出解约,并开始了长达一年,无经济来源的“北漂”生活。“为了舞台,我愿意付出所有一切。”那段时间,蔡徐坤经常宅在家或录音棚里反复地听音乐,学音乐制作,尝试制作片段式的旋律。没有人知道蔡徐坤何时能回归舞台,很多人劝他不应该在别人都抢着拍戏时,却去做音乐,但他却为自己写下“静守己心”四个字,“可能是我比较固执。”他笑笑,“沉寂的时候每个人都会有所迷失,会不知道方向。但这也是最关键的时刻。我就是很单纯地喜欢音乐,也是这样的一份热爱帮助了我。” 6 | -------------------------------------------------------------------------------- /includes/section_02.tex: -------------------------------------------------------------------------------- 1 | \chapter{公式、图与表} 2 | 3 | \section{公式插入} 4 | 本节为公式 \ref{eq:example} 插入测试。 5 | 6 | \begin{equation} 7 | \begin{split} 8 | I(X;Y)&=\mathcal{D}_{KL}(\mathbb{J}(X,Y)||\mathbb{P}(X)\otimes\mathbb{P}(Y)). 9 | \end{split} 10 | \label{eq:example} 11 | \end{equation} 12 | 13 | \section{图片插入} 14 | 有的同学可能听说“\LaTeX{} 只能使用 eps 格式的图片”,甚至把 jpg 格式转为 eps。 15 | 事实上,这种做法已经过时。 16 | 而且每次编译时都要要调用外部工具解析 eps,导致降低编译速度。 17 | 所以我们推荐矢量图直接使用 pdf 格式,位图使用 jpeg 或 png 格式。 18 | \begin{figure*}[ht] 19 | \centering 20 | \includegraphics[width=0.5\textwidth]{ouclogo} 21 | \caption{中国海洋大学图片。} 22 | \label{fig:ouc} 23 | \end{figure*} 24 | 25 | \section{表格插入} 26 | 27 | 本校没有过多的表格格式要求,只要求表头在上即可。 28 | 29 | \begin{table}[htb] 30 | \centering\small 31 | \caption{表号和表题在表的正上方} 32 | \label{tab:exampletable} 33 | \begin{tabular}{cl} 34 | \toprule 35 | 类型 & 描述 \\ 36 | \midrule 37 | 挂线表 & 挂线表也称系统表、组织表,用于表现系统结构 \\ 38 | 无线表 & 无线表一般用于设备配置单、技术参数列表等 \\ 39 | 无线表 & 无线表一般用于设备配置单、技术参数列表等 \\ 40 | \bottomrule 41 | \end{tabular} 42 | \end{table} 43 | 44 | \section{算法环境} 45 | 这是算法演示。关于该宏包的具体用法,请阅读宏包的官方文档。这是算法演示。关于该宏包的具体用法,请阅读宏包的官方文档。这是算法演示。关于该宏包的具体用法,请阅读宏包的官方文档。 46 | 47 | 48 | \begin{algorithm}[htb] 49 | \small 50 | \caption{发表论文} 51 | \begin{algorithmic}[1] %每行显示行号 52 | \Require 脑子 53 | \While{Ture} 54 | 做实验 55 | \If {巧了} 56 | \State break 57 | \EndIf 58 | \EndWhile 59 | \end{algorithmic} 60 | \end{algorithm} 61 | 62 | -------------------------------------------------------------------------------- /includes/section_03.tex: -------------------------------------------------------------------------------- 1 | \chapter{引用文献} 2 | \section{文献引用测试章节} 3 | 学校前身是创办于1924年的私立青岛大学\cite{lamport94}。1930年,在省立山东大学和私立青岛大学的基础上成立国立青岛大学。后历经国立山东大学、山东大学时期\cite{dwx},1958年山东大学主体迁往济南,以留青的海洋系、水产系、地质系、生物系等为基础,于1959年3月成立山东海洋学院。1960年被确定为全国13所重点综合性大学之一。1988年更名为青岛海洋大学。2002年更名为中国海洋大学。 4 | 5 | Lorem ipsum dolor sit amet\cite{xd}, consectetur adipiscing elit, sed do eiusmod tempor 6 | incididunt ut labore et dolore magna aliqua. 7 | Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut 8 | aliquip ex ea commodo consequat. 9 | Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu 10 | fugiat nulla pariatur. 11 | Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia 12 | deserunt mollit anim id est laborum. 13 | 14 | -------------------------------------------------------------------------------- /main.tex: -------------------------------------------------------------------------------- 1 | \documentclass[pdf,oneside]{oucthesis} 2 | % pdf: 便于阅读的电子版,去除掉多余的空白页,加入超链接等。 3 | % print:打印版本,添加空白页,便于双面打印,禁用超链接。 4 | % count: 字数统计,使用此功能,请在编译时,添加 --shell-escape 选项,并且主文件必须为 main.tex 5 | 6 | 7 | % ======================================== 8 | %| 论文信息填写 | 9 | % ======================================== 10 | 11 | \title{基于唱跳说唱篮球的舞蹈练习} 12 | \entitle{How to Master Singing, Rap, Dancing, and Basketball} 13 | \author{蔡徐坤} 14 | \advisor{蔡徐坤的导师} 15 | \keywords{流行,舞蹈} 16 | \enkeywords{Pop, Dancing} 17 | 18 | % ======================================== 19 | % 包引用 20 | % ======================================== 21 | \usepackage{booktabs} 22 | \usepackage{amsthm} 23 | \usepackage{algorithm} 24 | \usepackage{algorithmicx} 25 | \usepackage{algpseudocode} 26 | \usepackage{caption} 27 | \captionsetup{font={small}} 28 | 29 | % ======================================== 30 | % 内容区域 31 | % ======================================== 32 | \begin{document} 33 | 34 | % ======================================== 35 | % 中文摘要 36 | % ======================================== 37 | \begin{abstract} 38 | 39 | 出道之后,蔡徐坤大部分精力都投身于新歌的创作和专辑的打造。彼时,他需要随着NINE PERCENT在三个月内完成17场大型巡回见面会,因此写歌的时间必须“挤出来”用。洗澡时、做造型时、飞机上、两个行程间或吃饭的空隙,只要有手机、旋律,任何地方都是他的创作场所;偶尔待在录音室里,甚至成为他的喘息时间。去年,新京报记者见到他时正值午饭,化妆室里传来哼鸣声,“采访完的休息时间,我都可以写一段词。我还年轻,我觉得这都OK。”他曾表示。 40 | 41 | 而《1》的发表同样“违背”偶像市场的规律。蔡徐坤本可以每月发一首,制造更多话题。但他认为,一首首发表并不足以让外界更全面地了解他的音乐风格,“当别人都走得很快,我反而要踏踏实实一步步走。”偶尔听到舆论质疑他没有作品,蔡徐坤也曾犹豫,要不要先发一部分出来?但内心却总有个声音说,“你可以再多做几首不同风格的作品,让大家看到最全面、最好的你,而不是急于求成地去展现自己。” 42 | 43 | 在纷繁的流言蜚语中,蔡徐坤始终坚持自己把控节奏,不被潮流所左右。与蔡徐坤共事过的工作人员佩服他的“自控力”,坦言为了让外界更易接受他的音乐,团队对《1》的新歌也提过不少建议,“但他一直知道自己想要什么,很多事情也都能自己作出正确的决定。” 44 | 45 | 而在蔡徐坤出道一周年之际,他再次消失于公众视野,低调前往美国,筹备自己的首次海外公演。此次公演,已计划半年之久,但直到准备充分他才肯提上日程。公演是小型Live形式,一半DJ,一半表演。他还带来了自己的新歌,并把过去的作品做了更具现场性的改编。在美国,蔡徐坤没有给自己安排任何休闲时间,每天往返于录音棚和住所,“我最近在编曲上下了很多工夫,也重新调整了自己的录音方式,甚至在即兴创作上有了新的呈现。” 46 | 47 | 海外公演后,国内巡演也进入紧张的筹备。而音乐之外的工作,他坦言,于当下仍不在考虑范围。在蔡徐坤的节奏里,音乐才是他选择“在场”的最重要方式。 48 | 49 | 《偶像练习生》的首次登台,作为个人练习生,蔡徐坤是唯一一个大胆选择自己原创歌曲上台的人。一首《I Wanna Get Love》,蔡徐坤并不吝惜在舞台上展现性感、自如、洒脱的表演方式,“只有在舞台上,我才是真正的自己。”录制前,蔡徐坤耗费半个月精心编排新的舞蹈,在录音室反复练唱,连出场造型都精心设计了多种方案。那场表演,他成为全场第一个拿A等级的选手。然而节目播出后,外界焦点却集中于他的装扮。“重新再表演一次,我还是会这样选择。”在他看来,“性感”符合这首歌的表达,也是属于蔡徐坤的风格,舞台之外的事,他都不在意。 50 | 51 | 从小,蔡徐坤就表现出音乐天赋。家中有不少人从事与艺术相关的工作。在他一岁左右,会说整句话的时候,就开始唱歌了,见到麦克风就会跑过去抓起来哼唱,一听到音乐会情不自禁地跟着节奏摇摆。 52 | 53 | \end{abstract} 54 | 55 | % ======================================== 56 | %| 英文摘要 | 57 | % ======================================== 58 | \begin{enabstract} 59 | After his debut, Cai devoted most of his energy to the creation of new songs and the creation of albums. At that time, he needed to complete 17 large-scale tour meetings with nine percent in three months, so the time for writing songs had to be "squeezed out". When bathing, modeling, on the plane, between two itineraries or between meals, as long as there is a mobile phone and melody, anywhere is his creation place; occasionally stay in the studio, even become his breathing time. Last year, when the reporter of the Beijing News saw him, it was lunch time, and there was a hum in the dressing room. "I can write a paragraph during the rest time after the interview. I'm still young. I think it's OK. " He once said. 60 | 61 | 62 | 63 | The publication of "1" also "violates" the law of idol market. Cai Xukun could have written one song a month to create more topics. However, he believes that the publication of a song is not enough to give the outside world a more comprehensive understanding of his music style Occasionally heard the public doubt that he has no works, Cai Xukun also hesitated, do you want to send some first? But there is always a voice in my heart that says, "you can do more works of different styles, so that everyone can see the most comprehensive and best of you, instead of rushing to show yourself." 64 | 65 | 66 | 67 | In the numerous rumors, Cai Xukun always insists on keeping pace and not being influenced by the trend. The staff who worked with CAI Xukun admired his "self-control" and admitted that in order to make his music more acceptable to the outside world, the team also made a lot of suggestions for the new song of 1, "but he always knows what he wants and can make the right decisions for many things." 68 | 69 | 70 | 71 | On the first anniversary of CAI's debut, he once again disappeared from public view and went to the United States in a low-key way to prepare his first overseas performance. The performance has been planned for half a year, but he was not willing to put it on the agenda until he was fully prepared. The public performance is a small live form, half DJ, half performance. He also brought his own new songs and made more live adaptations of his past works. In the United States, Cai Xukun didn't arrange any leisure time for himself. He commuted to the studio and his residence every day. "I've worked a lot in the arrangement of music recently, and I've readjusted my recording method, and even made a new presentation in improvisation." 72 | 73 | 74 | 75 | After the overseas public performance, the domestic tour also entered the tense preparation. Work outside of music, he admits, is still out of consideration at the moment. In CAI Xukun's rhythm, music is the most important way for him to choose "presence". 76 | 77 | 78 | 79 | As an individual trainee, Cai Xukun is the only one who boldly chooses his own original songs to appear on the stage. "I wanna get love", Cai Xukun is not reluctant to show sexy, free and easy performance on the stage, "only on the stage, I am the real myself." Before recording, Cai Xukun spent half a month elaborately choreographing new dances, repeatedly practicing singing in the studio, and elaborately designed a variety of schemes even for appearance modeling. In that performance, he became the first player to take A-level. However, after the program was broadcast, the focus of the outside world was on his costume. "Do it again, I'll still do it." In his opinion, "sexy" is in line with the expression of this song, and also belongs to CAI Xukun's style. He doesn't care about things outside the stage. 80 | 81 | 82 | 83 | Since childhood, Cai Xukun has shown his musical talent. Many people in the family are engaged in art related work. When he was about one year old and could speak the whole sentence, he began to sing. When he saw the microphone, he would run to it and hum. When he heard the concert, he could not help but swing with the rhythm. 84 | 85 | \end{enabstract} 86 | 87 | % ======================================== 88 | %| 目录 | 89 | % ======================================== 90 | \tableofcontents 91 | 92 | % ======================================== 93 | %| 正文 | 94 | %| 注意!!\mainmatter 设置正文格式 | 95 | % ======================================== 96 | \mainmatter 97 | 98 | \include{includes/section_01} 99 | \include{includes/section_02} 100 | \include{includes/section_03} 101 | 102 | 103 | 104 | % ======================================== 105 | %| 文献 | 106 | % ======================================== 107 | \bibliographystyle{oucauthoryear} 108 | \bibliography{cite} 109 | 110 | % ======================================== 111 | %| 致谢 | 112 | % ======================================== 113 | \begin{ackonwlegmentback} 114 | 在论文的最后我想向所有帮助支持过我的亲人、朋友、老师致以崇高的敬意和真诚的感谢,感谢你们在我三年研究生的生活中给予的生活和工作的支持。 115 | 116 | 2017年9月,我开始了研究生生活,时间飞逝,我即将离开学校,走向社会,在此期间,我要特别感谢XX教授,是两位老师带我进入了XXXX的世界;特别感谢实验室的同学,在我碰到问题的时候伸出援手,帮助我解决问题;最后我要特别感谢我的父母,感谢你们对我学习生涯的资助,感谢你们对我未来决定的支持。 117 | \end{ackonwlegmentback} 118 | 119 | % ======================================== 120 | %| 简历 | 121 | % ======================================== 122 | \begin{profile} 123 | \section*{个人简历} 124 | 2000年0月0日出生于XX省XX市(县)。 125 | 2001年9月考入XX大学XX专业,2002年7月本科毕业并获得工学学士学位。 126 | 2002年9月考入中国海洋大学XX学院XX专业攻读硕士学位至今。 127 | 128 | \section*{发表的学术论文} 129 | \noindent[1] Xukun Cai, et al., Singing, Dancing, Rap, Basketball. ABC. 2019 130 | 131 | \section*{申请发明专利} 132 | \noindent[1]蔡徐坤。唱跳Rap篮球。PN: 20181000000.0 133 | \end{profile} 134 | 135 | \end{document} 136 | -------------------------------------------------------------------------------- /oucauthoryear.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% Original file is `versions/ustc/ustcthesis-numerical.bst', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% gbt7714.dtx (with options: `ustc,2015,numerical') 8 | %% ------------------------------------------------------------------- 9 | %% GB/T 7714-2015 BibTeX Style 10 | %% https://github.com/CTeX-org/gbt7714-bibtex-style 11 | %% Version: 2019/03/21 v1.1.1 12 | %% ------------------------------------------------------------------- 13 | %% Copyright 14 | %% USTC (C) 2015-2019 Created by Zeping Lee 15 | %% OUC version modified my Geo 16 | %% ------------------------------------------------------------------- 17 | %% This file may be distributed and/or modified under the 18 | %% conditions of the LaTeX Project Public License, either version 1.3c 19 | %% of this license or (at your option) any later version. 20 | %% The latest version of this license is in 21 | %% https://www.latex-project.org/lppl.txt 22 | %% and version 1.3c or later is part of all distributions of LaTeX 23 | %% version 2005/12/01 or later. 24 | %% ------------------------------------------------------------------- 25 | INTEGERS { 26 | uppercase.name 27 | max.num.authors 28 | period.between.author.year 29 | sentence.case.title 30 | link.title 31 | show.mark 32 | slash.for.extraction 33 | in.booktitle 34 | italic.jounal 35 | bold.journal.volume 36 | show.missing.address.publisher 37 | show.url 38 | show.doi 39 | show.note 40 | } 41 | 42 | FUNCTION {load.config} 43 | { 44 | #0 'uppercase.name := 45 | #3 'max.num.authors := 46 | #1 'sentence.case.title := 47 | #0 'link.title := 48 | #1 'show.mark := 49 | #1 'slash.for.extraction := 50 | #0 'in.booktitle := 51 | #0 'italic.jounal := 52 | #0 'bold.journal.volume := 53 | #1 'show.missing.address.publisher := 54 | #0 'show.missing.address.publisher := 55 | #1 'show.url := 56 | #1 'show.doi := 57 | #0 'show.note := 58 | } 59 | 60 | ENTRY 61 | { address 62 | author 63 | booktitle 64 | date 65 | doi 66 | edition 67 | editor 68 | howpublished 69 | institution 70 | journal 71 | key 72 | language 73 | mark 74 | medium 75 | note 76 | number 77 | organization 78 | pages 79 | publisher 80 | school 81 | series 82 | title 83 | translator 84 | url 85 | urldate 86 | volume 87 | year 88 | } 89 | { entry.lang entry.is.electronic entry.numbered } 90 | { label extra.label sort.label short.list entry.mark entry.url } 91 | 92 | INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } 93 | 94 | INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } 95 | 96 | INTEGERS { charptr len } 97 | 98 | FUNCTION {init.state.consts} 99 | { #0 'before.all := 100 | #1 'mid.sentence := 101 | #2 'after.sentence := 102 | #3 'after.block := 103 | #4 'after.slash := 104 | #3 'lang.zh := 105 | #4 'lang.ja := 106 | #1 'lang.en := 107 | #2 'lang.ru := 108 | #0 'lang.other := 109 | } 110 | 111 | FUNCTION {bbl.anonymous} 112 | { entry.lang lang.zh = 113 | { "佚名" } 114 | { "Anon" } 115 | if$ 116 | } 117 | 118 | FUNCTION {bbl.space} 119 | { entry.lang lang.zh = 120 | { "\ " } 121 | { " " } 122 | if$ 123 | } 124 | 125 | FUNCTION {bbl.et.al} 126 | { entry.lang lang.zh = 127 | { "等" } 128 | { entry.lang lang.ja = 129 | { "他" } 130 | { entry.lang lang.ru = 131 | { "идр" } 132 | { "et~al." } 133 | if$ 134 | } 135 | if$ 136 | } 137 | if$ 138 | } 139 | 140 | FUNCTION {citation.et.al} 141 | { bbl.et.al } 142 | 143 | FUNCTION {bbl.colon} { ": " } 144 | 145 | FUNCTION {bbl.wide.space} { "\quad " } 146 | 147 | FUNCTION {bbl.slash} { "//\allowbreak " } 148 | 149 | FUNCTION {bbl.sine.loco} 150 | { entry.lang lang.zh = 151 | { "[出版地不详]" } 152 | { "[S.l.]" } 153 | if$ 154 | } 155 | 156 | FUNCTION {bbl.sine.nomine} 157 | { entry.lang lang.zh = 158 | { "[出版者不详]" } 159 | { "[s.n.]" } 160 | if$ 161 | } 162 | 163 | FUNCTION {bbl.sine.loco.sine.nomine} 164 | { entry.lang lang.zh = 165 | { "[出版地不详: 出版者不详]" } 166 | { "[S.l.: s.n.]" } 167 | if$ 168 | } 169 | 170 | FUNCTION {not} 171 | { { #0 } 172 | { #1 } 173 | if$ 174 | } 175 | 176 | FUNCTION {and} 177 | { 'skip$ 178 | { pop$ #0 } 179 | if$ 180 | } 181 | 182 | FUNCTION {or} 183 | { { pop$ #1 } 184 | 'skip$ 185 | if$ 186 | } 187 | 188 | STRINGS { s t } 189 | 190 | FUNCTION {output.nonnull} 191 | { 's := 192 | output.state mid.sentence = 193 | { ", " * write$ } 194 | { output.state after.block = 195 | { add.period$ write$ 196 | newline$ 197 | "\newblock " write$ 198 | } 199 | { output.state before.all = 200 | 'write$ 201 | { output.state after.slash = 202 | { bbl.slash * write$ 203 | newline$ 204 | } 205 | { add.period$ " " * write$ } 206 | if$ 207 | } 208 | if$ 209 | } 210 | if$ 211 | mid.sentence 'output.state := 212 | } 213 | if$ 214 | s 215 | } 216 | 217 | FUNCTION {output} 218 | { duplicate$ empty$ 219 | 'pop$ 220 | 'output.nonnull 221 | if$ 222 | } 223 | 224 | FUNCTION {output.after} 225 | { 't := 226 | duplicate$ empty$ 227 | 'pop$ 228 | { 's := 229 | output.state mid.sentence = 230 | { t * write$ } 231 | { output.state after.block = 232 | { add.period$ write$ 233 | newline$ 234 | "\newblock " write$ 235 | } 236 | { output.state before.all = 237 | 'write$ 238 | { output.state after.slash = 239 | { bbl.slash * write$ } 240 | { add.period$ " " * write$ } 241 | if$ 242 | } 243 | if$ 244 | } 245 | if$ 246 | mid.sentence 'output.state := 247 | } 248 | if$ 249 | s 250 | } 251 | if$ 252 | } 253 | 254 | FUNCTION {output.check} 255 | { 't := 256 | duplicate$ empty$ 257 | { pop$ "empty " t * " in " * cite$ * warning$ } 258 | 'output.nonnull 259 | if$ 260 | } 261 | 262 | FUNCTION {fin.entry} 263 | { add.period$ 264 | write$ 265 | newline$ 266 | } 267 | 268 | FUNCTION {new.block} 269 | { output.state before.all = 270 | 'skip$ 271 | { output.state after.slash = 272 | 'skip$ 273 | { after.block 'output.state := } 274 | if$ 275 | } 276 | if$ 277 | } 278 | 279 | FUNCTION {new.sentence} 280 | { output.state after.block = 281 | 'skip$ 282 | { output.state before.all = 283 | 'skip$ 284 | { output.state after.slash = 285 | 'skip$ 286 | { after.sentence 'output.state := } 287 | if$ 288 | } 289 | if$ 290 | } 291 | if$ 292 | } 293 | 294 | FUNCTION {new.slash} 295 | { output.state before.all = 296 | 'skip$ 297 | { slash.for.extraction 298 | { after.slash 'output.state := } 299 | { after.block 'output.state := } 300 | if$ 301 | } 302 | if$ 303 | } 304 | 305 | FUNCTION {new.block.checka} 306 | { empty$ 307 | 'skip$ 308 | 'new.block 309 | if$ 310 | } 311 | 312 | FUNCTION {new.block.checkb} 313 | { empty$ 314 | swap$ empty$ 315 | and 316 | 'skip$ 317 | 'new.block 318 | if$ 319 | } 320 | 321 | FUNCTION {new.sentence.checka} 322 | { empty$ 323 | 'skip$ 324 | 'new.sentence 325 | if$ 326 | } 327 | 328 | FUNCTION {new.sentence.checkb} 329 | { empty$ 330 | swap$ empty$ 331 | and 332 | 'skip$ 333 | 'new.sentence 334 | if$ 335 | } 336 | 337 | FUNCTION {field.or.null} 338 | { duplicate$ empty$ 339 | { pop$ "" } 340 | 'skip$ 341 | if$ 342 | } 343 | 344 | FUNCTION {italicize} 345 | { duplicate$ empty$ 346 | { pop$ "" } 347 | { "\textit{" swap$ * "}" * } 348 | if$ 349 | } 350 | 351 | INTEGERS { byte second.byte } 352 | 353 | INTEGERS { char.lang tmp.lang } 354 | 355 | STRINGS { tmp.str } 356 | 357 | FUNCTION {get.str.lang} 358 | { 'tmp.str := 359 | lang.other 'tmp.lang := 360 | #1 'charptr := 361 | tmp.str text.length$ #1 + 'len := 362 | { charptr len < } 363 | { tmp.str charptr #1 substring$ chr.to.int$ 'byte := 364 | byte #128 < 365 | { charptr #1 + 'charptr := 366 | byte #64 > byte #91 < and byte #96 > byte #123 < and or 367 | { lang.en 'char.lang := } 368 | { lang.other 'char.lang := } 369 | if$ 370 | } 371 | { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := 372 | byte #224 < 373 | { charptr #2 + 'charptr := 374 | byte #207 > byte #212 < and 375 | byte #212 = second.byte #176 < and or 376 | { lang.ru 'char.lang := } 377 | { lang.other 'char.lang := } 378 | if$ 379 | } 380 | { byte #240 < 381 | { charptr #3 + 'charptr := 382 | byte #227 > byte #234 < and 383 | { lang.zh 'char.lang := } 384 | { byte #227 = 385 | { second.byte #143 > 386 | { lang.zh 'char.lang := } 387 | { second.byte #128 > second.byte #132 < and 388 | { lang.ja 'char.lang := } 389 | { lang.other 'char.lang := } 390 | if$ 391 | } 392 | if$ 393 | } 394 | { byte #239 = 395 | second.byte #163 > second.byte #172 < and and 396 | { lang.zh 'char.lang := } 397 | { lang.other 'char.lang := } 398 | if$ 399 | } 400 | if$ 401 | } 402 | if$ 403 | } 404 | { charptr #4 + 'charptr := 405 | byte #240 = second.byte #159 > and 406 | { lang.zh 'char.lang := } 407 | { lang.other 'char.lang := } 408 | if$ 409 | } 410 | if$ 411 | } 412 | if$ 413 | } 414 | if$ 415 | char.lang tmp.lang > 416 | { char.lang 'tmp.lang := } 417 | 'skip$ 418 | if$ 419 | } 420 | while$ 421 | tmp.lang 422 | } 423 | 424 | FUNCTION {check.entry.lang} 425 | { author field.or.null 426 | title field.or.null * 427 | get.str.lang 428 | } 429 | 430 | FUNCTION {set.entry.lang} 431 | { language empty$ 432 | { check.entry.lang } 433 | { language "english" = language "american" = or language "british" = or 434 | { lang.en } 435 | { language "chinese" = 436 | { lang.zh } 437 | { language "japanese" = 438 | { lang.ja } 439 | { language "russian" = 440 | { lang.ru } 441 | { check.entry.lang } 442 | if$ 443 | } 444 | if$ 445 | } 446 | if$ 447 | } 448 | if$ 449 | } 450 | if$ 451 | 'entry.lang := 452 | } 453 | 454 | FUNCTION {set.entry.numbered} 455 | { type$ "patent" = 456 | type$ "standard" = or 457 | type$ "techreport" = or 458 | { #1 'entry.numbered := } 459 | { #0 'entry.numbered := } 460 | if$ 461 | } 462 | 463 | INTEGERS { nameptr namesleft numnames name.lang } 464 | 465 | FUNCTION {format.names} 466 | { 's := 467 | #1 'nameptr := 468 | s num.names$ 'numnames := 469 | numnames 'namesleft := 470 | { namesleft #0 > } 471 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 472 | nameptr max.num.authors > 473 | { bbl.et.al 474 | #1 'namesleft := 475 | } 476 | { t "others" = 477 | { bbl.et.al } 478 | { t get.str.lang 'name.lang := 479 | name.lang lang.en = 480 | { t #1 "{vv~}{ll}{~f{~}}" format.name$ 481 | uppercase.name 482 | { "u" change.case$ } 483 | 'skip$ 484 | if$ 485 | t #1 "{, jj}" format.name$ * 486 | } 487 | { t #1 "{ll}{ff}" format.name$ } 488 | if$ 489 | } 490 | if$ 491 | } 492 | if$ 493 | nameptr #1 > 494 | { ", " swap$ * * } 495 | 'skip$ 496 | if$ 497 | nameptr #1 + 'nameptr := 498 | namesleft #1 - 'namesleft := 499 | } 500 | while$ 501 | } 502 | 503 | FUNCTION {format.key} 504 | { empty$ 505 | { key field.or.null } 506 | { "" } 507 | if$ 508 | } 509 | 510 | FUNCTION {format.authors} 511 | { author empty$ not 512 | { author format.names } 513 | { "empty author in " cite$ * warning$ 514 | "" 515 | } 516 | if$ 517 | } 518 | 519 | FUNCTION {format.editors} 520 | { editor empty$ 521 | { "" } 522 | { editor format.names } 523 | if$ 524 | } 525 | 526 | FUNCTION {format.translators} 527 | { translator empty$ 528 | { "" } 529 | { translator format.names 530 | entry.lang lang.zh = 531 | { translator num.names$ #3 > 532 | { "译" * } 533 | { ", 译" * } 534 | if$ 535 | } 536 | 'skip$ 537 | if$ 538 | } 539 | if$ 540 | } 541 | 542 | FUNCTION {format.full.names} 543 | {'s := 544 | #1 'nameptr := 545 | s num.names$ 'numnames := 546 | numnames 'namesleft := 547 | { namesleft #0 > } 548 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 549 | t get.str.lang 'name.lang := 550 | name.lang lang.en = 551 | { t #1 "{vv~}{ll}" format.name$ 't := } 552 | { t #1 "{ll}{ff}" format.name$ 't := } 553 | if$ 554 | nameptr #1 > 555 | { 556 | namesleft #1 > 557 | { ", " * t * } 558 | { 559 | numnames #2 > 560 | { "," * } 561 | 'skip$ 562 | if$ 563 | t "others" = 564 | { " et~al." * } 565 | { " and " * t * } 566 | if$ 567 | } 568 | if$ 569 | } 570 | 't 571 | if$ 572 | nameptr #1 + 'nameptr := 573 | namesleft #1 - 'namesleft := 574 | } 575 | while$ 576 | } 577 | 578 | FUNCTION {author.editor.full} 579 | { author empty$ 580 | { editor empty$ 581 | { "" } 582 | { editor format.full.names } 583 | if$ 584 | } 585 | { author format.full.names } 586 | if$ 587 | } 588 | 589 | FUNCTION {author.full} 590 | { author empty$ 591 | { "" } 592 | { author format.full.names } 593 | if$ 594 | } 595 | 596 | FUNCTION {editor.full} 597 | { editor empty$ 598 | { "" } 599 | { editor format.full.names } 600 | if$ 601 | } 602 | 603 | FUNCTION {make.full.names} 604 | { type$ "book" = 605 | type$ "inbook" = 606 | or 607 | 'author.editor.full 608 | { type$ "collection" = 609 | type$ "proceedings" = 610 | or 611 | 'editor.full 612 | 'author.full 613 | if$ 614 | } 615 | if$ 616 | } 617 | 618 | FUNCTION {output.bibitem} 619 | { newline$ 620 | "\bibitem[" write$ 621 | label write$ 622 | ")" make.full.names duplicate$ short.list = 623 | { pop$ } 624 | { * } 625 | if$ 626 | 's := 627 | s text.length$ 'charptr := 628 | { charptr #0 > } 629 | { s charptr #1 substring$ "]" = 630 | { #0 'charptr := } 631 | { charptr #1 - 'charptr := } 632 | if$ 633 | } 634 | while$ 635 | charptr #0 > 636 | { "{" s * "}" * } 637 | { s } 638 | if$ 639 | "]{" * write$ 640 | cite$ write$ 641 | "}" write$ 642 | newline$ 643 | "" 644 | before.all 'output.state := 645 | } 646 | 647 | FUNCTION {change.sentence.case} 648 | { entry.lang lang.en = 649 | { "t" change.case$ } 650 | 'skip$ 651 | if$ 652 | } 653 | 654 | FUNCTION {add.link} 655 | { url empty$ not 656 | { "\href{" url * "}{" * swap$ * "}" * } 657 | { doi empty$ not 658 | { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * } 659 | 'skip$ 660 | if$ 661 | } 662 | if$ 663 | } 664 | 665 | FUNCTION {format.title} 666 | { title empty$ 667 | { "" } 668 | { title 669 | sentence.case.title 670 | 'change.sentence.case 671 | 'skip$ 672 | if$ 673 | entry.numbered number empty$ not and 674 | { bbl.colon * number * } 675 | 'skip$ 676 | if$ 677 | link.title 678 | 'add.link 679 | 'skip$ 680 | if$ 681 | } 682 | if$ 683 | } 684 | 685 | FUNCTION {tie.or.space.connect} 686 | { duplicate$ text.length$ #3 < 687 | { "~" } 688 | { " " } 689 | if$ 690 | swap$ * * 691 | } 692 | 693 | FUNCTION {either.or.check} 694 | { empty$ 695 | 'pop$ 696 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 697 | if$ 698 | } 699 | 700 | FUNCTION {is.digit} 701 | { duplicate$ empty$ 702 | { pop$ #0 } 703 | { chr.to.int$ 704 | duplicate$ "0" chr.to.int$ < 705 | { pop$ #0 } 706 | { "9" chr.to.int$ > 707 | { #0 } 708 | { #1 } 709 | if$ 710 | } 711 | if$ 712 | } 713 | if$ 714 | } 715 | 716 | FUNCTION {is.number} 717 | { 's := 718 | s empty$ 719 | { #0 } 720 | { s text.length$ 'charptr := 721 | { charptr #0 > 722 | s charptr #1 substring$ is.digit 723 | and 724 | } 725 | { charptr #1 - 'charptr := } 726 | while$ 727 | charptr not 728 | } 729 | if$ 730 | } 731 | 732 | FUNCTION {format.volume} 733 | { volume empty$ not 734 | { volume is.number 735 | { entry.lang lang.zh = 736 | { "第 " volume * " 卷" * } 737 | { "volume" volume tie.or.space.connect } 738 | if$ 739 | } 740 | { volume } 741 | if$ 742 | } 743 | { "" } 744 | if$ 745 | } 746 | 747 | FUNCTION {format.number} 748 | { number empty$ not 749 | { number is.number 750 | { entry.lang lang.zh = 751 | { "第 " number * " 册" * } 752 | { "number" number tie.or.space.connect } 753 | if$ 754 | } 755 | { number } 756 | if$ 757 | } 758 | { "" } 759 | if$ 760 | } 761 | 762 | FUNCTION {format.volume.number} 763 | { volume empty$ not 764 | { format.volume } 765 | { format.number } 766 | if$ 767 | } 768 | 769 | FUNCTION {format.title.vol.num} 770 | { title 771 | sentence.case.title 772 | 'change.sentence.case 773 | 'skip$ 774 | if$ 775 | entry.numbered 776 | { number empty$ not 777 | { bbl.colon * number * } 778 | 'skip$ 779 | if$ 780 | } 781 | { format.volume.number 's := 782 | s empty$ not 783 | { bbl.colon * s * } 784 | 'skip$ 785 | if$ 786 | } 787 | if$ 788 | } 789 | 790 | FUNCTION {format.series.vol.num.title} 791 | { format.volume.number 's := 792 | series empty$ not 793 | { series 794 | sentence.case.title 795 | 'change.sentence.case 796 | 'skip$ 797 | if$ 798 | entry.numbered 799 | { bbl.wide.space * } 800 | { bbl.colon * 801 | s empty$ not 802 | { s * bbl.wide.space * } 803 | 'skip$ 804 | if$ 805 | } 806 | if$ 807 | title * 808 | sentence.case.title 809 | 'change.sentence.case 810 | 'skip$ 811 | if$ 812 | entry.numbered number empty$ not and 813 | { bbl.colon * number * } 814 | 'skip$ 815 | if$ 816 | } 817 | { format.title.vol.num } 818 | if$ 819 | link.title 820 | 'add.link 821 | 'skip$ 822 | if$ 823 | } 824 | 825 | FUNCTION {format.booktitle.vol.num} 826 | { booktitle 827 | entry.numbered 828 | 'skip$ 829 | { format.volume.number 's := 830 | s empty$ not 831 | { bbl.colon * s * } 832 | 'skip$ 833 | if$ 834 | } 835 | if$ 836 | } 837 | 838 | FUNCTION {format.series.vol.num.booktitle} 839 | { format.volume.number 's := 840 | series empty$ not 841 | { series bbl.colon * 842 | entry.numbered not s empty$ not and 843 | { s * bbl.wide.space * } 844 | 'skip$ 845 | if$ 846 | booktitle * 847 | } 848 | { format.booktitle.vol.num } 849 | if$ 850 | in.booktitle 851 | { duplicate$ empty$ not entry.lang lang.en = and 852 | { "In: " swap$ * } 853 | 'skip$ 854 | if$ 855 | } 856 | 'skip$ 857 | if$ 858 | } 859 | 860 | FUNCTION {format.journal} 861 | { journal 862 | italic.jounal entry.lang lang.en = and 863 | 'italicize 864 | 'skip$ 865 | if$ 866 | } 867 | 868 | FUNCTION {set.entry.mark} 869 | { entry.mark empty$ not 870 | 'pop$ 871 | { mark empty$ not 872 | { pop$ mark 'entry.mark := } 873 | { 'entry.mark := } 874 | if$ 875 | } 876 | if$ 877 | } 878 | 879 | FUNCTION {format.mark} 880 | { show.mark 881 | { medium empty$ not 882 | { entry.mark "/" * medium * 'entry.mark := } 883 | { entry.is.electronic 884 | { entry.mark "/OL" * 'entry.mark := } 885 | 'skip$ 886 | if$ 887 | } 888 | if$ 889 | "\allowbreak[" entry.mark * "]" * 890 | } 891 | { "" } 892 | if$ 893 | } 894 | 895 | FUNCTION {num.to.ordinal} 896 | { duplicate$ text.length$ 'charptr := 897 | duplicate$ charptr #1 substring$ 's := 898 | s "1" = 899 | { "st" * } 900 | { s "2" = 901 | { "nd" * } 902 | { s "3" = 903 | { "rd" * } 904 | { "th" * } 905 | if$ 906 | } 907 | if$ 908 | } 909 | if$ 910 | } 911 | 912 | FUNCTION {format.edition} 913 | { edition empty$ 914 | { "" } 915 | { edition is.number 916 | { entry.lang lang.zh = 917 | { edition " 版" * } 918 | { edition num.to.ordinal " ed." * } 919 | if$ 920 | } 921 | { entry.lang lang.en = 922 | { edition change.sentence.case 's := 923 | s "Revised" = s "Revised edition" = or 924 | { "Rev. ed." } 925 | { s " ed." *} 926 | if$ 927 | } 928 | { edition } 929 | if$ 930 | } 931 | if$ 932 | } 933 | if$ 934 | } 935 | 936 | FUNCTION {format.publisher} 937 | { publisher empty$ not 938 | { publisher } 939 | { school empty$ not 940 | { school } 941 | { organization empty$ not 942 | { organization } 943 | { institution empty$ not 944 | { institution } 945 | { "" } 946 | if$ 947 | } 948 | if$ 949 | } 950 | if$ 951 | } 952 | if$ 953 | } 954 | 955 | FUNCTION {format.address.publisher} 956 | { address empty$ not 957 | { address 958 | format.publisher empty$ not 959 | { bbl.colon * format.publisher * } 960 | { entry.is.electronic not show.missing.address.publisher and 961 | { bbl.colon * bbl.sine.nomine * } 962 | 'skip$ 963 | if$ 964 | } 965 | if$ 966 | } 967 | { entry.is.electronic not show.missing.address.publisher and 968 | { format.publisher empty$ not 969 | { bbl.sine.loco bbl.colon * format.publisher * } 970 | { bbl.sine.loco.sine.nomine } 971 | if$ 972 | } 973 | { format.publisher empty$ not 974 | { format.publisher } 975 | { "" } 976 | if$ 977 | } 978 | if$ 979 | } 980 | if$ 981 | } 982 | 983 | FUNCTION {extract.before.dash} 984 | { duplicate$ empty$ 985 | { pop$ "" } 986 | { 's := 987 | #1 'charptr := 988 | s text.length$ #1 + 'len := 989 | { charptr len < 990 | s charptr #1 substring$ "-" = not 991 | and 992 | } 993 | { charptr #1 + 'charptr := } 994 | while$ 995 | s #1 charptr #1 - substring$ 996 | } 997 | if$ 998 | } 999 | 1000 | FUNCTION {extract.after.dash} 1001 | { duplicate$ empty$ 1002 | { pop$ "" } 1003 | { 's := 1004 | #1 'charptr := 1005 | s text.length$ #1 + 'len := 1006 | { charptr len < 1007 | s charptr #1 substring$ "-" = not 1008 | and 1009 | } 1010 | { charptr #1 + 'charptr := } 1011 | while$ 1012 | { charptr len < 1013 | s charptr #1 substring$ "-" = 1014 | and 1015 | } 1016 | { charptr #1 + 'charptr := } 1017 | while$ 1018 | s charptr global.max$ substring$ 1019 | } 1020 | if$ 1021 | } 1022 | 1023 | FUNCTION {contains.dash} 1024 | { duplicate$ empty$ 1025 | { pop$ #0 } 1026 | { 's := 1027 | { s empty$ not 1028 | s #1 #1 substring$ "-" = not 1029 | and 1030 | } 1031 | { s #2 global.max$ substring$ 's := } 1032 | while$ 1033 | s empty$ not 1034 | } 1035 | if$ 1036 | } 1037 | 1038 | FUNCTION {format.year} 1039 | { year empty$ not 1040 | { year extract.before.dash } 1041 | { date empty$ not 1042 | { date extract.before.dash } 1043 | { "empty year in " cite$ * warning$ 1044 | urldate empty$ not 1045 | { "[" urldate extract.before.dash * "]" * } 1046 | { "" } 1047 | if$ 1048 | } 1049 | if$ 1050 | } 1051 | if$ 1052 | extra.label * 1053 | } 1054 | 1055 | FUNCTION {format.date} 1056 | { type$ "patent" = type$ "newspaper" = or 1057 | date empty$ not and 1058 | { date } 1059 | { year } 1060 | if$ 1061 | } 1062 | 1063 | FUNCTION {format.editdate} 1064 | { date empty$ not 1065 | { "\allowbreak(" date * ")" * } 1066 | { "" } 1067 | if$ 1068 | } 1069 | 1070 | FUNCTION {format.urldate} 1071 | { urldate empty$ not entry.is.electronic and 1072 | { "\allowbreak[" urldate * "]" * } 1073 | { "" } 1074 | if$ 1075 | } 1076 | 1077 | FUNCTION {hyphenate} 1078 | { 't := 1079 | "" 1080 | { t empty$ not } 1081 | { t #1 #1 substring$ "-" = 1082 | { "-" * 1083 | { t #1 #1 substring$ "-" = } 1084 | { t #2 global.max$ substring$ 't := } 1085 | while$ 1086 | } 1087 | { t #1 #1 substring$ * 1088 | t #2 global.max$ substring$ 't := 1089 | } 1090 | if$ 1091 | } 1092 | while$ 1093 | } 1094 | 1095 | FUNCTION {format.pages} 1096 | { pages empty$ 1097 | { "" } 1098 | { pages hyphenate } 1099 | if$ 1100 | } 1101 | 1102 | FUNCTION {format.journal.volume} 1103 | { volume empty$ not 1104 | { bold.journal.volume 1105 | { "\textbf{" volume * "}" * } 1106 | { volume } 1107 | if$ 1108 | } 1109 | { "" } 1110 | if$ 1111 | } 1112 | 1113 | FUNCTION {format.journal.number} 1114 | { number empty$ not 1115 | { "\penalty0 (" number * ")" * } 1116 | { "" } 1117 | if$ 1118 | } 1119 | 1120 | FUNCTION {format.journal.pages} 1121 | { pages empty$ 1122 | { "" } 1123 | { ":\penalty0 " pages hyphenate * } 1124 | if$ 1125 | } 1126 | 1127 | FUNCTION {format.periodical.year.volume.number} 1128 | { year empty$ not 1129 | { year extract.before.dash } 1130 | { "empty year in periodical " cite$ * warning$ } 1131 | if$ 1132 | volume empty$ not 1133 | { ", " * volume extract.before.dash * } 1134 | 'skip$ 1135 | if$ 1136 | number empty$ not 1137 | { "\penalty0 (" * number extract.before.dash * ")" * } 1138 | 'skip$ 1139 | if$ 1140 | year contains.dash 1141 | { "--" * 1142 | year extract.after.dash empty$ 1143 | volume extract.after.dash empty$ and 1144 | number extract.after.dash empty$ and not 1145 | { year extract.after.dash empty$ not 1146 | { year extract.after.dash * } 1147 | { year extract.before.dash * } 1148 | if$ 1149 | volume empty$ not 1150 | { ", " * volume extract.after.dash * } 1151 | 'skip$ 1152 | if$ 1153 | number empty$ not 1154 | { "\penalty0 (" * number extract.after.dash * ")" * } 1155 | 'skip$ 1156 | if$ 1157 | } 1158 | 'skip$ 1159 | if$ 1160 | } 1161 | 'skip$ 1162 | if$ 1163 | } 1164 | 1165 | FUNCTION {check.url} 1166 | { url empty$ not 1167 | { "\url{" url * "}" * 'entry.url := 1168 | #1 'entry.is.electronic := 1169 | } 1170 | { howpublished empty$ not 1171 | { howpublished #1 #5 substring$ "\url{" = 1172 | { howpublished 'entry.url := 1173 | #1 'entry.is.electronic := 1174 | } 1175 | 'skip$ 1176 | if$ 1177 | } 1178 | { note empty$ not 1179 | { note #1 #5 substring$ "\url{" = 1180 | { note 'entry.url := 1181 | #1 'entry.is.electronic := 1182 | } 1183 | 'skip$ 1184 | if$ 1185 | } 1186 | 'skip$ 1187 | if$ 1188 | } 1189 | if$ 1190 | } 1191 | if$ 1192 | } 1193 | 1194 | FUNCTION {format.url} 1195 | { entry.url empty$ not 1196 | { new.block entry.url } 1197 | { "" } 1198 | if$ 1199 | } 1200 | 1201 | FUNCTION {check.doi} 1202 | { doi empty$ not 1203 | { #1 'entry.is.electronic := } 1204 | 'skip$ 1205 | if$ 1206 | } 1207 | 1208 | FUNCTION {is.in.url} 1209 | { 's := 1210 | s empty$ 1211 | { #1 } 1212 | { entry.url empty$ 1213 | { #0 } 1214 | { s text.length$ 'len := 1215 | entry.url text.length$ 'charptr := 1216 | { entry.url charptr len substring$ s = not 1217 | charptr #0 > 1218 | and 1219 | } 1220 | { charptr #1 - 'charptr := } 1221 | while$ 1222 | charptr 1223 | } 1224 | if$ 1225 | } 1226 | if$ 1227 | } 1228 | 1229 | FUNCTION {format.doi} 1230 | { "" 1231 | doi empty$ not show.doi and 1232 | { "" 's := 1233 | doi 't := 1234 | #0 'numnames := 1235 | { t empty$ not} 1236 | { t #1 #1 substring$ 'tmp.str := 1237 | tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or 1238 | { t #2 #1 substring$ empty$ 1239 | { s tmp.str * 's := } 1240 | 'skip$ 1241 | if$ 1242 | s empty$ s is.in.url or 1243 | 'skip$ 1244 | { numnames #1 + 'numnames := 1245 | numnames #1 > 1246 | { ", " * } 1247 | { "DOI: " * } 1248 | if$ 1249 | "\doi{" s * "}" * * 1250 | } 1251 | if$ 1252 | "" 's := 1253 | } 1254 | { s tmp.str * 's := } 1255 | if$ 1256 | t #2 global.max$ substring$ 't := 1257 | } 1258 | while$ 1259 | 's := 1260 | s empty$ not 1261 | { new.block s } 1262 | { "" } 1263 | if$ 1264 | } 1265 | 'skip$ 1266 | if$ 1267 | } 1268 | 1269 | FUNCTION {check.electronic} 1270 | { "" 'entry.url := 1271 | #0 'entry.is.electronic := 1272 | 'check.doi 1273 | 'skip$ 1274 | if$ 1275 | 'check.url 1276 | 'skip$ 1277 | if$ 1278 | medium empty$ not 1279 | { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or 1280 | { #1 'entry.is.electronic := } 1281 | 'skip$ 1282 | if$ 1283 | } 1284 | 'skip$ 1285 | if$ 1286 | } 1287 | 1288 | FUNCTION {format.note} 1289 | { note empty$ not show.note and 1290 | { note } 1291 | { "" } 1292 | if$ 1293 | } 1294 | 1295 | FUNCTION {empty.misc.check} 1296 | { author empty$ title empty$ 1297 | year empty$ 1298 | and and 1299 | key empty$ not and 1300 | { "all relevant fields are empty in " cite$ * warning$ } 1301 | 'skip$ 1302 | if$ 1303 | } 1304 | 1305 | FUNCTION {monograph} 1306 | { output.bibitem 1307 | author empty$ not 1308 | { format.authors } 1309 | { editor empty$ not 1310 | { format.editors } 1311 | { "empty author and editor in " cite$ * warning$ 1312 | "" 1313 | } 1314 | if$ 1315 | } 1316 | if$ 1317 | output 1318 | new.block 1319 | format.series.vol.num.title "title" output.check 1320 | "M" set.entry.mark 1321 | format.mark "" output.after 1322 | new.block 1323 | format.translators output 1324 | new.sentence 1325 | format.edition output 1326 | new.block 1327 | format.address.publisher output 1328 | format.year "year" output.check 1329 | format.pages bbl.colon output.after 1330 | format.urldate "" output.after 1331 | format.url output 1332 | format.doi output 1333 | new.block 1334 | format.note output 1335 | fin.entry 1336 | } 1337 | 1338 | FUNCTION {incollection} 1339 | { output.bibitem 1340 | format.authors output 1341 | author format.key output 1342 | new.block 1343 | format.title "title" output.check 1344 | "M" set.entry.mark 1345 | format.mark "" output.after 1346 | new.block 1347 | format.translators output 1348 | new.slash 1349 | format.editors output 1350 | new.block 1351 | format.series.vol.num.booktitle "booktitle" output.check 1352 | new.block 1353 | format.edition output 1354 | new.block 1355 | format.address.publisher output 1356 | format.year "year" output.check 1357 | format.pages bbl.colon output.after 1358 | format.urldate "" output.after 1359 | format.url output 1360 | format.doi output 1361 | new.block 1362 | format.note output 1363 | fin.entry 1364 | } 1365 | 1366 | FUNCTION {periodical} 1367 | { output.bibitem 1368 | format.authors output 1369 | author format.key output 1370 | new.block 1371 | format.title "title" output.check 1372 | "J" set.entry.mark 1373 | format.mark "" output.after 1374 | new.block 1375 | format.periodical.year.volume.number output 1376 | new.block 1377 | format.address.publisher output 1378 | format.date "year" output.check 1379 | format.urldate "" output.after 1380 | format.url output 1381 | format.doi output 1382 | new.block 1383 | format.note output 1384 | fin.entry 1385 | } 1386 | 1387 | FUNCTION {article} 1388 | { output.bibitem 1389 | format.authors output 1390 | author format.key output 1391 | new.block 1392 | format.title "title" output.check 1393 | "J" set.entry.mark 1394 | format.mark "" output.after 1395 | new.block 1396 | format.journal "journal" output.check 1397 | format.date "year" output.check 1398 | format.journal.volume output 1399 | format.journal.number "" output.after 1400 | format.journal.pages "" output.after 1401 | format.urldate "" output.after 1402 | format.url output 1403 | format.doi output 1404 | new.block 1405 | format.note output 1406 | fin.entry 1407 | } 1408 | 1409 | FUNCTION {patent} 1410 | { output.bibitem 1411 | format.authors output 1412 | author format.key output 1413 | new.block 1414 | format.title "title" output.check 1415 | "P" set.entry.mark 1416 | format.mark "" output.after 1417 | new.block 1418 | format.date "year" output.check 1419 | format.urldate "" output.after 1420 | format.url output 1421 | format.doi output 1422 | new.block 1423 | format.note output 1424 | fin.entry 1425 | } 1426 | 1427 | FUNCTION {electronic} 1428 | { #1 #1 check.electronic 1429 | #1 'entry.is.electronic := 1430 | output.bibitem 1431 | format.authors output 1432 | author format.key output 1433 | new.block 1434 | format.series.vol.num.title "title" output.check 1435 | "EB" set.entry.mark 1436 | format.mark "" output.after 1437 | new.block 1438 | format.address.publisher output 1439 | date empty$ 1440 | { format.date output } 1441 | 'skip$ 1442 | if$ 1443 | format.pages bbl.colon output.after 1444 | format.editdate "" output.after 1445 | format.urldate "" output.after 1446 | format.url output 1447 | format.doi output 1448 | new.block 1449 | format.note output 1450 | fin.entry 1451 | } 1452 | 1453 | FUNCTION {misc} 1454 | { journal empty$ not 1455 | 'article 1456 | { booktitle empty$ not 1457 | 'incollection 1458 | { publisher empty$ not 1459 | 'monograph 1460 | { entry.is.electronic 1461 | 'electronic 1462 | { "Z" set.entry.mark 1463 | monograph 1464 | } 1465 | if$ 1466 | } 1467 | if$ 1468 | } 1469 | if$ 1470 | } 1471 | if$ 1472 | empty.misc.check 1473 | } 1474 | 1475 | FUNCTION {archive} 1476 | { "A" set.entry.mark 1477 | misc 1478 | } 1479 | 1480 | FUNCTION {book} { monograph } 1481 | 1482 | FUNCTION {booklet} { book } 1483 | 1484 | FUNCTION {collection} 1485 | { "G" set.entry.mark 1486 | monograph 1487 | } 1488 | 1489 | FUNCTION {database} 1490 | { "DB" set.entry.mark 1491 | electronic 1492 | } 1493 | 1494 | FUNCTION {dataset} 1495 | { "DS" set.entry.mark 1496 | electronic 1497 | } 1498 | 1499 | FUNCTION {inbook} { book } 1500 | 1501 | FUNCTION {inproceedings} 1502 | { "C" set.entry.mark 1503 | incollection 1504 | } 1505 | 1506 | FUNCTION {conference} { inproceedings } 1507 | 1508 | FUNCTION {map} 1509 | { "CM" set.entry.mark 1510 | misc 1511 | } 1512 | 1513 | FUNCTION {manual} { monograph } 1514 | 1515 | FUNCTION {mastersthesis} 1516 | { "D" set.entry.mark 1517 | monograph 1518 | } 1519 | 1520 | FUNCTION {newspaper} 1521 | { "N" set.entry.mark 1522 | article 1523 | } 1524 | 1525 | FUNCTION {online} 1526 | { "EB" set.entry.mark 1527 | electronic 1528 | } 1529 | 1530 | FUNCTION {phdthesis} { mastersthesis } 1531 | 1532 | FUNCTION {proceedings} 1533 | { "C" set.entry.mark 1534 | monograph 1535 | } 1536 | 1537 | FUNCTION {software} 1538 | { "CP" set.entry.mark 1539 | electronic 1540 | } 1541 | 1542 | FUNCTION {standard} 1543 | { "S" set.entry.mark 1544 | misc 1545 | } 1546 | 1547 | FUNCTION {techreport} 1548 | { "R" set.entry.mark 1549 | misc 1550 | } 1551 | 1552 | FUNCTION {unpublished} 1553 | { "Z" set.entry.mark 1554 | misc 1555 | } 1556 | 1557 | FUNCTION {default.type} { misc } 1558 | 1559 | MACRO {jan} {"January"} 1560 | 1561 | MACRO {feb} {"February"} 1562 | 1563 | MACRO {mar} {"March"} 1564 | 1565 | MACRO {apr} {"April"} 1566 | 1567 | MACRO {may} {"May"} 1568 | 1569 | MACRO {jun} {"June"} 1570 | 1571 | MACRO {jul} {"July"} 1572 | 1573 | MACRO {aug} {"August"} 1574 | 1575 | MACRO {sep} {"September"} 1576 | 1577 | MACRO {oct} {"October"} 1578 | 1579 | MACRO {nov} {"November"} 1580 | 1581 | MACRO {dec} {"December"} 1582 | 1583 | MACRO {acmcs} {"ACM Computing Surveys"} 1584 | 1585 | MACRO {acta} {"Acta Informatica"} 1586 | 1587 | MACRO {cacm} {"Communications of the ACM"} 1588 | 1589 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 1590 | 1591 | MACRO {ibmsj} {"IBM Systems Journal"} 1592 | 1593 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 1594 | 1595 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 1596 | 1597 | MACRO {ieeetcad} 1598 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 1599 | 1600 | MACRO {ipl} {"Information Processing Letters"} 1601 | 1602 | MACRO {jacm} {"Journal of the ACM"} 1603 | 1604 | MACRO {jcss} {"Journal of Computer and System Sciences"} 1605 | 1606 | MACRO {scp} {"Science of Computer Programming"} 1607 | 1608 | MACRO {sicomp} {"SIAM Journal on Computing"} 1609 | 1610 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 1611 | 1612 | MACRO {tods} {"ACM Transactions on Database Systems"} 1613 | 1614 | MACRO {tog} {"ACM Transactions on Graphics"} 1615 | 1616 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 1617 | 1618 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 1619 | 1620 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 1621 | 1622 | MACRO {tcs} {"Theoretical Computer Science"} 1623 | 1624 | FUNCTION {sortify} 1625 | { purify$ 1626 | "l" change.case$ 1627 | } 1628 | 1629 | FUNCTION {chop.word} 1630 | { 's := 1631 | 'len := 1632 | s #1 len substring$ = 1633 | { s len #1 + global.max$ substring$ } 1634 | 's 1635 | if$ 1636 | } 1637 | 1638 | FUNCTION {format.lab.names} 1639 | { 's := 1640 | s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 1641 | t get.str.lang 'name.lang := 1642 | name.lang lang.en = 1643 | { t #1 "{vv~}{ll}" format.name$} 1644 | { t #1 "{ll}{ff}" format.name$} 1645 | if$ 1646 | s num.names$ #1 > 1647 | { bbl.space * citation.et.al * } 1648 | 'skip$ 1649 | if$ 1650 | } 1651 | 1652 | FUNCTION {author.key.label} 1653 | { author empty$ 1654 | { key empty$ 1655 | { cite$ #1 #3 substring$ } 1656 | 'key 1657 | if$ 1658 | } 1659 | { author format.lab.names } 1660 | if$ 1661 | } 1662 | 1663 | FUNCTION {author.editor.key.label} 1664 | { author empty$ 1665 | { editor empty$ 1666 | { key empty$ 1667 | { cite$ #1 #3 substring$ } 1668 | 'key 1669 | if$ 1670 | } 1671 | { editor format.lab.names } 1672 | if$ 1673 | } 1674 | { author format.lab.names } 1675 | if$ 1676 | } 1677 | 1678 | FUNCTION {author.key.organization.label} 1679 | { author empty$ 1680 | { key empty$ 1681 | { organization empty$ 1682 | { cite$ #1 #3 substring$ } 1683 | { "The " #4 organization chop.word #3 text.prefix$ } 1684 | if$ 1685 | } 1686 | 'key 1687 | if$ 1688 | } 1689 | { author format.lab.names } 1690 | if$ 1691 | } 1692 | 1693 | FUNCTION {editor.key.organization.label} 1694 | { editor empty$ 1695 | { key empty$ 1696 | { organization empty$ 1697 | { cite$ #1 #3 substring$ } 1698 | { "The " #4 organization chop.word #3 text.prefix$ } 1699 | if$ 1700 | } 1701 | 'key 1702 | if$ 1703 | } 1704 | { editor format.lab.names } 1705 | if$ 1706 | } 1707 | 1708 | FUNCTION {calc.short.authors} 1709 | { type$ "book" = 1710 | type$ "inbook" = 1711 | or 1712 | 'author.editor.key.label 1713 | { type$ "collection" = 1714 | type$ "proceedings" = 1715 | or 1716 | { editor empty$ not 1717 | 'editor.key.organization.label 1718 | 'author.key.organization.label 1719 | if$ 1720 | } 1721 | 'author.key.label 1722 | if$ 1723 | } 1724 | if$ 1725 | 'short.list := 1726 | } 1727 | 1728 | FUNCTION {calc.label} 1729 | { calc.short.authors 1730 | short.list 1731 | "(" 1732 | * 1733 | format.year duplicate$ empty$ 1734 | short.list key field.or.null = or 1735 | { pop$ "" } 1736 | 'skip$ 1737 | if$ 1738 | * 1739 | 'label := 1740 | } 1741 | 1742 | INTEGERS { seq.num } 1743 | 1744 | FUNCTION {init.seq} 1745 | { #0 'seq.num :=} 1746 | 1747 | FUNCTION {int.to.fix} 1748 | { "000000000" swap$ int.to.str$ * 1749 | #-1 #10 substring$ 1750 | } 1751 | 1752 | FUNCTION {presort} 1753 | { set.entry.lang 1754 | set.entry.numbered 1755 | show.url show.doi check.electronic 1756 | calc.label 1757 | label sortify 1758 | " " 1759 | * 1760 | seq.num #1 + 'seq.num := 1761 | seq.num int.to.fix 1762 | 'sort.label := 1763 | sort.label * 1764 | #1 entry.max$ substring$ 1765 | 'sort.key$ := 1766 | } 1767 | 1768 | STRINGS { longest.label last.label next.extra } 1769 | 1770 | INTEGERS { longest.label.width last.extra.num number.label } 1771 | 1772 | FUNCTION {initialize.longest.label} 1773 | { "" 'longest.label := 1774 | #0 int.to.chr$ 'last.label := 1775 | "" 'next.extra := 1776 | #0 'longest.label.width := 1777 | #0 'last.extra.num := 1778 | #0 'number.label := 1779 | } 1780 | 1781 | FUNCTION {forward.pass} 1782 | { last.label label = 1783 | { last.extra.num #1 + 'last.extra.num := 1784 | last.extra.num int.to.chr$ 'extra.label := 1785 | } 1786 | { "a" chr.to.int$ 'last.extra.num := 1787 | "" 'extra.label := 1788 | label 'last.label := 1789 | } 1790 | if$ 1791 | number.label #1 + 'number.label := 1792 | } 1793 | 1794 | FUNCTION {reverse.pass} 1795 | { next.extra "b" = 1796 | { "a" 'extra.label := } 1797 | 'skip$ 1798 | if$ 1799 | extra.label 'next.extra := 1800 | extra.label 1801 | duplicate$ empty$ 1802 | 'skip$ 1803 | { "{\natexlab{" swap$ * "}}" * } 1804 | if$ 1805 | 'extra.label := 1806 | label extra.label * 'label := 1807 | } 1808 | 1809 | FUNCTION {bib.sort.order} 1810 | { sort.label 'sort.key$ := 1811 | } 1812 | 1813 | FUNCTION {begin.bib} 1814 | { preamble$ empty$ 1815 | 'skip$ 1816 | { preamble$ write$ newline$ } 1817 | if$ 1818 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1819 | write$ newline$ 1820 | "\providecommand{\natexlab}[1]{#1}" 1821 | write$ newline$ 1822 | "\providecommand{\url}[1]{#1}" 1823 | write$ newline$ 1824 | "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else" 1825 | write$ newline$ 1826 | " \urlstyle{same}\fi" 1827 | write$ newline$ 1828 | show.doi 1829 | { "\providecommand{\href}[2]{\url{#2}}" 1830 | write$ newline$ 1831 | "\providecommand{\doi}[1]{\href{https://doi.org/#1}{#1}}" 1832 | write$ newline$ 1833 | } 1834 | 'skip$ 1835 | if$ 1836 | } 1837 | 1838 | FUNCTION {end.bib} 1839 | { newline$ 1840 | "\end{thebibliography}" write$ newline$ 1841 | } 1842 | 1843 | READ 1844 | 1845 | EXECUTE {init.state.consts} 1846 | 1847 | EXECUTE {load.config} 1848 | 1849 | EXECUTE {init.seq} 1850 | 1851 | ITERATE {presort} 1852 | 1853 | SORT 1854 | 1855 | EXECUTE {initialize.longest.label} 1856 | 1857 | ITERATE {forward.pass} 1858 | 1859 | REVERSE {reverse.pass} 1860 | 1861 | ITERATE {bib.sort.order} 1862 | 1863 | SORT 1864 | 1865 | EXECUTE {begin.bib} 1866 | 1867 | ITERATE {call.type$} 1868 | 1869 | EXECUTE {end.bib} 1870 | -------------------------------------------------------------------------------- /ouclogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summitgao/OUC-LaTex-master/a340598d04ef9d19c90ee56842de8427e5e70fb9/ouclogo.png -------------------------------------------------------------------------------- /oucthesis.cls: -------------------------------------------------------------------------------- 1 | 2 | \NeedsTeXFormat{LaTeX2e} 3 | \ProvidesClass{oucthesis}[OUC Thesis Template] 4 | 5 | 6 | \newif\ifouc@pdf 7 | \DeclareOption{print}{\ouc@pdffalse} 8 | \DeclareOption{pdf}{\ouc@pdftrue} 9 | 10 | \newif\ifouc@enmac 11 | \ouc@enmacfalse 12 | \DeclareOption{enmac}{\ouc@enmactrue} 13 | 14 | \newif\ifouc@count 15 | \ouc@countfalse 16 | \DeclareOption{count}{\ouc@counttrue} 17 | 18 | \PassOptionsToClass{openany}{ctexbook} 19 | \DeclareOption*{\PassOptionsToClass{\CurrentOption}{ctexbook}} 20 | \ExecuteOptions{print} 21 | \ProcessOptions\relax 22 | 23 | \PassOptionsToClass{scheme=chinese}{ctexbook} 24 | \PassOptionsToPackage{quiet}{xeCJK} 25 | \LoadClass[UTF8,a4paper,zihao=-4]{ctexbook}[2017/04/01] 26 | \PassOptionsToClass{scheme=chinese}{ctexbook} 27 | % =============================================== 28 | % Required Package 29 | \RequirePackage{amsmath} 30 | \RequirePackage{unicode-math} 31 | \RequirePackage[driver=xetex]{geometry} 32 | \RequirePackage{graphicx} 33 | \RequirePackage{fancyhdr} 34 | \RequirePackage{color} 35 | \RequirePackage{titletoc} 36 | \RequirePackage{caption} 37 | \RequirePackage[perpage]{footmisc} 38 | \RequirePackage{url} 39 | \RequirePackage{calc} 40 | \RequirePackage{dashrule} 41 | \RequirePackage{algorithm} 42 | \RequirePackage{algorithmicx} 43 | \RequirePackage[sort&compress]{natbib} 44 | \RequirePackage{bashful} 45 | \ifouc@pdf 46 | \RequirePackage{hyperref} 47 | \else 48 | \fi 49 | 50 | % =============================================== 51 | % Changable parameters 52 | \newcommand\ouc@atendpackage{\csname ctex_at_end_package:nn\endcsname} 53 | \ouc@atendpackage{hyperref}{ 54 | \hypersetup{ 55 | bookmarksnumbered = true, 56 | bookmarksopen = true, 57 | bookmarksopenlevel = 1, 58 | linktoc = all, 59 | unicode = true, 60 | psdextra = true, 61 | } 62 | \ifouc@pdf 63 | \hypersetup{ 64 | colorlinks = true, 65 | allcolors = blue, 66 | } 67 | \else 68 | \hypersetup{hidelinks} 69 | \fi 70 | } 71 | 72 | % =============================================== 73 | % Word Count 74 | \newcommand{\wordcount}[0]{% 75 | \immediate\write18{texcount -1 -sum main.tex > words.count }% 76 | \input{words.count}% 77 | } 78 | 79 | % =============================================== 80 | % Custom Command 81 | 82 | \renewenvironment{titlepage}{% 83 | \clearpage 84 | \thispagestyle{empty}% 85 | }{\clearpage} 86 | 87 | \newcommand\blankpage{% 88 | \null 89 | \thispagestyle{empty}% 90 | \addtocounter{page}{-1}% 91 | \newpage 92 | } 93 | 94 | \newcommand\zhspace[1][1]{\hspace{#1\ccwd}} 95 | 96 | % =============================================== 97 | % Fonts Setting 98 | 99 | \newdimen\bp@ 100 | \bp@=1bp 101 | \renewcommand\normalsize{% 102 | \@setfontsize\normalsize{12\bp@}{23\bp@}% 103 | \abovedisplayskip 12\bp@ \@plus3\bp@ \@minus7\bp@ 104 | \abovedisplayshortskip \z@ \@plus3\bp@ 105 | \belowdisplayshortskip 6.5\bp@ \@plus3.5\bp@ \@minus3\bp@ 106 | \belowdisplayskip \abovedisplayskip 107 | \let\@listi\@listI 108 | } 109 | \normalsize 110 | \renewcommand\small{% 111 | \@setfontsize\small{10.5\bp@}{19.25\bp@}% 112 | \abovedisplayskip 10.5\bp@ \@plus3\bp@ \@minus6\bp@ 113 | \abovedisplayshortskip \z@ \@plus3\bp@ 114 | \belowdisplayshortskip 6.5\bp@ \@plus3.5\bp@ \@minus3\bp@ 115 | \belowdisplayskip \abovedisplayskip 116 | } 117 | \renewcommand\footnotesize{% 118 | \@setfontsize\footnotesize{9\bp@}{16.5\bp@}% 119 | \abovedisplayskip 9\bp@ \@plus2\bp@ \@minus5\bp@ 120 | \abovedisplayshortskip \z@ \@plus3\bp@ 121 | \belowdisplayshortskip 6\bp@ \@plus3\bp@ \@minus3\bp@ 122 | \belowdisplayskip \abovedisplayskip 123 | } 124 | \renewcommand\scriptsize{\@setfontsize\scriptsize{7.5\bp@}{13.75\bp@}} 125 | \renewcommand\tiny{\@setfontsize\tiny{6.5\bp@}{11.92\bp@}} 126 | \renewcommand\large{\@setfontsize\large{15\bp@}{27.5\bp@}} 127 | \renewcommand\Large{\@setfontsize\Large{18\bp@}{33\bp@}} 128 | \renewcommand\LARGE{\@setfontsize\LARGE{22\bp@}{40.33\bp@}} 129 | \renewcommand\huge{\@setfontsize\huge{24\bp@}{44\bp@}} 130 | \renewcommand\Huge{\@setfontsize\Huge{26\bp@}{47.67\bp@}} 131 | 132 | \linespread{1}\selectfont 133 | \newcommand\ouc@setchinese{% 134 | \xeCJKResetPunctClass 135 | } 136 | \newcommand\ouc@setenglish{% 137 | \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}% 138 | \xeCJKDeclareCharClass{HalfRight}{% 139 | "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A% 140 | }% 141 | } 142 | \ouc@setchinese 143 | 144 | % =============================================== 145 | % Page Format 146 | 147 | \geometry{ 148 | paper = a4paper, 149 | vmargin = 2.54cm, 150 | hmargin = 3.17cm, 151 | headheight = 0.75cm, 152 | headsep = 0.29cm, 153 | footskip = 0.79cm, 154 | } 155 | \pagestyle{fancy} 156 | \let\sectionmark\@gobble 157 | \renewcommand\headrulewidth{0.5\p@} 158 | 159 | % =============================================== 160 | % Header Format 161 | \newcommand\ouc@wordcount{\wordcount} 162 | 163 | \newcommand\ouc@hf@font{\fontsize{9\bp@}{12\bp@}\selectfont} 164 | \newcommand\ouc@header{\@title} 165 | \fancypagestyle{title}{% 166 | \fancyhf{}% 167 | \fancyhead[C]{\ouc@hf@font\ouc@header}% 168 | \fancyfoot[C]{\ouc@hf@font\thepage}% 169 | \ifouc@count 170 | \fancyfoot[R]{\color{gray}\ouc@hf@font \ouc@wordcount}% 171 | \fi 172 | } 173 | \fancypagestyle{plain}{% 174 | \fancyhf{}% 175 | \renewcommand{\headrulewidth}{0pt} 176 | \fancyhead[C]{} 177 | \fancyfoot[C]{\ouc@hf@font\thepage}% 178 | } 179 | \pagestyle{title} 180 | 181 | % =============================================== 182 | % Pre Content Format 183 | \ctexset{ 184 | chapter = { 185 | name = {,}, 186 | format = \centering\sffamily\fontsize{16\bp@}{26.67\bp@}\selectfont, 187 | nameformat = {}, 188 | number = \thechapter, 189 | aftername = \hspace{\ccwd}, 190 | beforeskip = 24\bp@, 191 | afterskip = 18\bp@, 192 | fixskip = true, 193 | }, 194 | } 195 | 196 | % =============================================== 197 | % Define Information 198 | 199 | \newcommand*{\entitle}[1]{ 200 | \def\ouc@entitle{#1} 201 | } 202 | \newcommand*{\advisor}[1]{ 203 | \def\ouc@advisor{#1} 204 | } 205 | \newcommand*{\mythanks}[1]{ 206 | \def\ouc@mythanks{#1} 207 | } 208 | 209 | \newcommand*{\keywords}[1]{ 210 | \def\ouc@keywords{#1} 211 | } 212 | 213 | \newcommand*{\enkeywords}[1]{ 214 | \def\ouc@enkeywords{#1} 215 | } 216 | % =============================================== 217 | % Define Page Style 218 | 219 | 220 | % Abstract 221 | 222 | \NewDocumentCommand\ouc@chapter{o m}{% 223 | \IfValueTF{#1}{% 224 | \chaptermark{#1}% 225 | }{% 226 | \chaptermark{#2}% 227 | }% 228 | { 229 | \makeatletter\c@secnumdepth=-1\makeatother 230 | \chapter{#2} 231 | } 232 | } 233 | \newcommand\pagenumberingnoreset[1]{\gdef\thepage{\csname @#1\endcsname\c@page}} 234 | 235 | 236 | % Abstract 237 | \let\standardclearpage\clearpage 238 | \newenvironment{abstract}{% 239 | \clearpage 240 | \pagestyle{plain}% 241 | \pagenumberingnoreset{Roman} 242 | \ouc@setchinese 243 | \begin{center} 244 | \fontsize{16\bp@}{26.67\bp@}\sffamily\@title 245 | \end{center} 246 | \let\clearpage\relax 247 | \ouc@chapter{摘\zhspace[1]要} 248 | \let\clearpage\standardclearpage 249 | \vspace{1em} 250 | }{ 251 | \par\null\par\noindent\hangindent=4\ccwd\relax 252 | \sffamily{关键词:\ouc@keywords} 253 | \clearpage 254 | \pagestyle{title} 255 | \pagenumberingnoreset{arabic} 256 | } 257 | 258 | \newenvironment{enabstract}{% 259 | \clearpage 260 | \pagestyle{plain} 261 | \pagenumberingnoreset{Roman} 262 | \ouc@setenglish 263 | \begin{center} 264 | \fontsize{16\bp@}{26.67\bp@}\sffamily\ouc@entitle 265 | \end{center} 266 | \let\clearpage\relax 267 | \ouc@chapter[Abstract]{Abstract}% 268 | \let\clearpage\standardclearpage 269 | \vspace{1em} 270 | }{ 271 | \par\null\par\noindent\hangindent=5.3em\relax 272 | \textbf{Keywords: \ouc@enkeywords} 273 | \clearpage 274 | \pagestyle{title} 275 | \pagenumberingnoreset{arabic} 276 | } 277 | 278 | % Toc 279 | \renewcommand{\contentsname}{目\zhspace[1]录} 280 | \renewcommand\tableofcontents{% 281 | \pagestyle{empty} 282 | \chapter*{\contentsname}% 283 | \@starttoc{toc}% 284 | \clearpage 285 | \pagestyle{title} 286 | } 287 | 288 | \newcommand\ouc@leaders{\titlerule*[4\bp@]{\textperiodcentered}} 289 | \titlecontents{chapter} 290 | [\z@]{\fontsize{14\bp@}{25.67\bp@}\selectfont} 291 | {\contentspush{\thecontentslabel\unskip\hspace{\ccwd}}}{} 292 | { \ouc@leaders\contentspage} 293 | \titlecontents{section} 294 | [\ccwd]{\normalsize} 295 | {\contentspush{\thecontentslabel\hspace{\ccwd}}}{} 296 | { \ouc@leaders\contentspage} 297 | \titlecontents{subsection} 298 | [2\ccwd]{\normalsize} 299 | {\contentspush{\thecontentslabel\hspace{\ccwd}}}{} 300 | { \ouc@leaders\contentspage} 301 | 302 | 303 | % =============================================== 304 | % Main Content Format 305 | 306 | \renewcommand\chapter{% 307 | \if@openright\cleardoublepage\else\clearpage\fi 308 | \global\@topnum\z@ 309 | \@afterindenttrue 310 | \secdef\@chapter\@schapter 311 | } 312 | \renewcommand\mainmatter{ 313 | \clearpage 314 | \pagestyle{title} 315 | \setcounter{page}{1} 316 | \ctexset{ 317 | chapter = { 318 | format = \sffamily\fontsize{16\bp@}{26.67\bp@}\selectfont, 319 | aftername = \zhspace[0.5], 320 | beforeskip = 1em, 321 | afterskip = 1.8em, 322 | fixskip = true, 323 | }, 324 | section = { 325 | format = \sffamily\fontsize{14\bp@}{25.67\bp@}\selectfont, 326 | aftername = \zhspace[0.5], 327 | afterskip = 1.2em, 328 | fixskip = false, 329 | }, 330 | subsection = { 331 | format = \fontsize{12\bp@}{22\bp@}\selectfont, 332 | aftername = \zhspace[0.5], 333 | afterskip = 1.2em, 334 | fixskip = false, 335 | indent = \z@, 336 | }, 337 | subsubsection = { 338 | format = \rmfamily\fontsize{12\bp@}{22\bp@}\selectfont, 339 | aftername = \zhspace[0.5], 340 | fixskip = false, 341 | indent = \ccwd, 342 | }, 343 | paragraph = { 344 | format = \rmfamily\fontsize{12\bp@}{22\bp@}\selectfont, 345 | aftername = {}, 346 | indent = \ccwd, 347 | }, 348 | } 349 | } 350 | 351 | % Caption Stype 352 | \renewcommand{\thetable}{\thechapter-\arabic{table}~} 353 | \renewcommand{\thefigure}{\thechapter-\arabic{figure}~} 354 | \counterwithin{algorithm}{chapter} 355 | \renewcommand{\thealgorithm}{\thechapter-\arabic{algorithm}} 356 | \floatname{algorithm}{算法} 357 | \DeclareCaptionLabelSeparator{space}{ } 358 | \captionsetup{ 359 | labelsep=space 360 | } 361 | 362 | \renewcommand{\theequation}{\arabic{chapter}-\arabic{equation}} 363 | \RequirePackage{mathtools} 364 | \newtagform{test}[]{式(}{)} 365 | \usetagform{test} 366 | 367 | % =============================================== 368 | % Tail Content Format 369 | \newcommand\makeafter{ 370 | \clearpage 371 | \ctexset{ 372 | chapter = { 373 | name = {,}, 374 | format = \centering\sffamily\fontsize{14\bp@}{25.67\bp@}\selectfont, 375 | nameformat = {}, 376 | number = \thechapter, 377 | aftername = \hspace{\ccwd}, 378 | beforeskip = 24\bp@, 379 | afterskip = 18\bp@, 380 | fixskip = true, 381 | }, 382 | section = { 383 | name = {,}, 384 | format = \centering\sffamily\bfseries\normalsize\selectfont, 385 | nameformat = {}, 386 | number = \thechapter, 387 | aftername = \hspace{\ccwd}, 388 | beforeskip = 24\bp@, 389 | afterskip = 18\bp@, 390 | fixskip = true, 391 | }, 392 | } 393 | } 394 | 395 | \newcommand\bibstyle@super{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} 396 | \citestyle{super} 397 | \renewcommand\bibfont{\fontsize{10.5\bp@}{20\bp@}\selectfont} 398 | \setlength{\bibsep}{0\p@ \@plus.2\p@} 399 | \setlength{\bibhang}{2\ccwd} 400 | \renewcommand\@biblabel[1]{[#1]\hfill} 401 | 402 | \renewcommand\bibsection{% 403 | \makeafter 404 | \ouc@chapter{\bibname}% 405 | } 406 | 407 | \newenvironment{ackonwlegmentback}{% 408 | \clearpage 409 | \makeafter 410 | \ouc@setchinese 411 | \ouc@chapter{致\zhspace[1]谢} 412 | }{ 413 | \clearpage 414 | } 415 | 416 | \newenvironment{profile}{% 417 | \clearpage 418 | \makeafter 419 | \ouc@setchinese 420 | \ouc@chapter{个人简历、在学期间发表的学术论文与研究成果} 421 | }{ 422 | \clearpage 423 | } 424 | --------------------------------------------------------------------------------