├── 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 | 
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 |
--------------------------------------------------------------------------------