├── README.md
├── cite.bib
├── contents
├── section_01.tex
├── section_02.tex
├── section_03.tex
├── section_04.tex
└── section_05.tex
├── data
├── abstract_ch.tex
├── abstract_en.tex
├── achievement.tex
├── acknowledgement.tex
├── committee.tex
├── cover.tex
├── profile.tex
└── statement.tex
├── img
├── 20250219095840.jpg
├── fig_1_1_study_area.jpg
└── fig_1_2_OSNAP.jpg
├── main.tex
├── oucauthoryear.bst
└── oucthesis.cls
/README.md:
--------------------------------------------------------------------------------
1 | ## 中国海洋大学硕博士学位论文 LaTeX 模板 (2025版)
2 |
3 | 🔥🔥🔥【20250225】数学字体以及西文文本为Times New Roman。
4 |
5 | 🔥🔥🔥【20250224】添加英文目录,图目录,表目录。
6 |
7 | 🔥🔥🔥【20250219】学校最新的模板行距是20磅,我们也进行相应修改。在main.tex 中添加了\setlength{\baselineskip}{20pt},从中文摘要开始,段落行距就是20磅了。
8 |
9 | 🔥🔥🔥【20250218】2025年2月,学校印发了《研究生学位论文撰写指南》,发布了最新的研究生学位论文模板。针对最新模板,我们进行了大量修改。欢迎大家使用并提出建议!
10 |
11 | 🔥🔥🔥 特别提示,之前本仓库链接在:https://github.com/summitgao/OUC-LaTex-master 因为启用了2FA验证密码无法找回,现在启用本仓库继续维护。欢迎有问题在[issues](https://github.com/oucailab/OUC-LaTex-master/issues) 里面讨论
12 |
13 |
14 |
15 |
16 |
17 | 本模板是中国海洋大学硕博士学位论文 LaTeX 模板。LaTeX是一个流行的编辑科学类文章的工具。 大多数科学类书籍,期刊,文章都采用了LaTeX。 使用这个模板可以使你从无聊的格式限制中解脱出来,从而更专注地阐述自己的想法。 希望本模板能够帮助你入门LaTeX, 如果你有关于本模板的良好意见和建议,请在顶栏的问题(issue)一栏中提出。
18 |
19 | 本项目以 [GeoffreyChen](https://geoch.top) 编写的中国海洋大学的硕博士学位论文 LaTeX 模板为基础,按照最新版的 《[中国海洋大学研究生学位论文书写格式统一要求](http://grad.ouc.edu.cn/39/69/c1660a14697/page.psp)》 的要求编写。
20 |
21 | 学习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/)”。
22 |
23 | 本模板已经帮助2017级以来的多届中国海洋大学硕士、博士毕业生使用,在学生及答辩专家中反馈良好,大家可以放心使用。
24 |
25 |
26 |
27 |
28 |
29 | ## 如何使用
30 |
31 | **本模板在 Overleaf 下测试通过,本地编译尚未测试。** 可以通过链接:https://www.overleaf.com/read/vmqmwgkcbnxf#aa257e 在线浏览本项目。考虑到 overleaf 服务器在国外,有时不太稳定,推荐大家使用国产软件 Texpage,我们组日常使用感觉比 overleaf 流畅许多,地址:https://texpage.com/
32 |
33 | 
34 |
35 |
36 | Overleaf 是一个线上 LaTeX 编辑器,可以在不安装任何工具的情况下编写 LaTeX 文档,同时也可以和其他人共享文档,共同编辑。
37 |
38 | 推荐使用 **Overleaf** 使用本模板,具体方法如下:
39 |
40 | 1. 下载模板代码,并压缩成 .zip 文件
41 | 2. 在 Overleaf 中上传这个 .zip 压缩文件以创建一个新 Overleaf 项目
42 | 3. 在 Overleaf 界面左上角点击 "Menu"
43 | - 选择 "Compiler" 为 "XeLaTeX"
44 | - 选择 "TeX Live version" 为 "2019" 或者更新的版本
45 | 4. 使用 Overleaf 编译
46 |
47 | 最近我也在使用 [TexPage](https://www.texpage.com/),可以理解为国产版的 Overleaf,对于国内用户支持的要好一些,尤其是云盘同步功能,支持百度网盘和 WebDAV 。另外,遇到问题客服也很给力,发邮件能够12小时以内及时回复帮忙解决问题,大家可以考虑。
48 |
49 |
50 |
51 |
52 |
53 | ## 修改记录
54 | - 20250218,按照研究生院提供的最新模板进行修改
55 | - 20220221,修改参考文献自动连续:[1] [2] [3] 自动转化为 [1-3]
56 | - 20220115,为方便在 Overleaf 中快速编译,将正文拆分为若干单独文件
57 | - 20220501,修改“关键词”格式,小节不换页(赵政达修改)
58 | - 20230126,考虑到图表标题和正文字体一样大,有时区分不开是正文还是图表标题,因此把图表标题改小一号(高峰修改)
59 | - 20250216,根据新版范例,修改了“关键词”格式,奇偶数页眉要求,部分字体要求大小,调整了目录无空格要求(黄博斌修改)
60 | - 20250220,对于英文图片和表格标题,使用 \thefigure 和 \thetable 自动生成序号
61 | - 20250224,添加英文目录,图目录,表目录。修改图表caption的形式,中英文caption间距6磅。
62 |
63 |
64 |
65 | ## 反馈与贡献
66 |
67 | 本模版是由诸多感兴趣的同学一起维护的开源项目,我们非常欢迎问题反馈和新的贡献者!
68 |
69 | ### 反馈问题
70 |
71 | 如果在使用上有任何问题,请至 [在 GitHub 项目issue提问](https://github.com/oucailab/OUC-LaTex-master/issues)
72 |
73 |
74 |
75 | ### 成为贡献者
76 |
77 | 这个仓库是面向用户的**示例模版**,如果你有很好的排版示例,可以提交到此仓库与大家分享。如果你想为本仓库贡献代码,欢迎发 Pull Request,然后再将更新同步到本仓库。
78 |
79 | 除了提交 Pull Request 之外,还有以下方式可以进行贡献:
80 |
81 | * 帮助我们解答同学们的[问题](https://github.com/oucailab/OUC-LaTex-master/issues),这些问题你也可能遇到过并且知道如何解决;
82 | * 向周围同学安利 OUC-LaTex-master,让更多的同学使用我们维护的模板;
83 | * 在讨论区中分享你的使用体验,以及吐槽。如果你也想成为项目的长期维护者,也可以通过邮件/讨论区告诉我们。:-)
84 |
85 |
86 |
87 | ## 开源许可
88 |
89 | 本项目代码基于 MIT 协议开源
90 |
91 | 学校标志的版权归中国海洋大学所有
92 |
93 | 有任何问题可以随时联系高老师:gaofeng@ouc.edu.cn
94 |
95 | 有任何问题也可以随时联系高老师的研究生小黄:yellowstar168@outlook.com
96 |
97 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/contents/section_01.tex:
--------------------------------------------------------------------------------
1 | \chapter{绪论}
2 | \enchapter{Introduction}
3 |
4 |
5 | \section{北大西洋海洋多尺度能量串级的研究意义}
6 | \ensection{Significance of multi-scale energy cascade in the North Atlantic Ocean}
7 |
8 | 海洋中的环流受到地球自转的影响,动能主要集中在海洋的大尺度环流,如黑潮、湾流和中尺度涡旋等空间尺度大于地转尺度的运动上。根据目前已有的卫星高度计数据,中尺度能量占据了大洋总能量的70\%以上。中尺度庞大的动能来源与去向问题一直是本世纪海洋动力学研究的热点问题。Wunsch和Ferrari在2004年回顾性的工作指出 $\cdots\cdots$
9 |
10 |
11 | \section{中尺度涡旋与亚中尺度过程之间的能量串级}
12 | \ensection{Energy cascade between mesoscale eddies and sub-mesoscale processes}
13 |
14 | \subsection{中尺度漩涡}
15 | \ensubsection{Mesoscale eddy}
16 |
17 | 中尺度涡旋在海洋中广泛存在,其空间尺度通常在50公里-500公里,被认为是低阶近似满足地转平衡的最小尺度海洋运动过程,因此其水平运动远远大于垂直运动,具有较小罗斯贝数和较大理查德森数。中尺度涡旋较为稳定,周期从几天到数月。
18 |
19 | \subsection{亚中尺度漩涡}
20 | \ensubsection{Submesoscale eddy}
21 |
22 | 亚中尺度指从中尺度到耗散尺度之间这一宽阔尺度的粗略划分。在这部分中存在涡旋、锋面以及涡丝等多种运动形式。从NASA的MODIS卫星观测的表面叶绿素为亚中尺度涡丝和锋面频繁出现提供了证据[2]。除此之外,部分亚中尺度涡旋被发现存在于上层海洋内部和海底。亚中尺度过程的周期一般为几小时到几天[3]。其空间尺度一般小于当地的罗斯
23 |
24 | \subsection{亚中尺度与中尺度之间的能量串级}
25 | \ensubsection{Energy cascade between submesoscale and mesoscale}
26 |
27 |
28 | 由于海洋中尺度和亚中尺度相互作用中存在着大量非线性过程,因此现有研究多引入湍流理论来解释上述过程的物理机制,称为地转湍流理论。本文对地转湍流理论的讨论分为能量注入尺度和能量串级两部分。能量注入尺度指代湍流动力学含能区的观点,即能量从该尺度进入动能谱,本文中对应不稳定发生势能转化为动能的特征尺度。能量串级概念来源于前苏联科学家Kolmogorov在谱方法基础上针对湍流研究的奠基性的工作,指能量跨尺度转移过程$\cdots\cdots$
29 |
30 | {\color{red}``下面是一个图片的示例,进行了修改,图片标题包括英文标题和中文标题,字体为5号,居中。"}
31 |
32 | \begin{figure}[htbp]
33 | \centering
34 | \includegraphics[width=0.8\linewidth]{img/fig_1_1_study_area.jpg}
35 | \figurecaption{(a) OOI项目位置,红框表示研究区域,彩色的点表示系泊。(b) 抽样概况的时间分布。(c) 采样点的空间分布,黑色的星星表示(a)中的系泊浮标}{(a) Position of OOI program, red box represents the study region, colored points indicate moorings. (b) Time distribution of sampling profiles. (c) Spatial distribution of sampling points, the blacks stars indicate the moorings in (a)}
36 | \label{fig:enter-label}
37 | \end{figure}
38 |
39 | \begin{figure}[htbp]
40 | \centering
41 | \includegraphics[width=0.5\linewidth]{img/fig_1_2_OSNAP.jpg}
42 | \figurecaption{北大西洋副极地翻转环流观测项目(OSNAP)阵列观测点(黄色点)空间分布}{Spatial distributions of OSNAP array observations (yellow dots)}
43 | \label{fig:enter-label}
44 | \end{figure}
45 |
46 | {\color{red}``图序采用阿拉伯数字分章编号,如第3章第2个图的图序为“图3-2”;英文标题,以Fig. 1-1编号。全文编号方式应统一。"}
47 |
48 | \section{本章小结}
49 | \ensection{Summary of this chapter}
50 |
51 | 前文中,我们回顾了中尺度涡旋、亚中尺度运动和近惯性内波以及它们之间的相互作用关系,然而前任工作对上述物理过程的研究往往是分散的,主要集中于讨论两两之间的相互作用,且具有时间或空间上的依赖性的,导致不同物理过程之间的相互作用的研究工作很难整合到一起$\cdots\cdots$
--------------------------------------------------------------------------------
/contents/section_02.tex:
--------------------------------------------------------------------------------
1 | \chapter{数据与主要方法}
2 | \enchapter{Data and methods}
3 |
4 | \section{数据}
5 | \ensection{Datasets}
6 |
7 | \subsection{船载ADCP数据}
8 | \ensubsection{ADCP data}
9 |
10 | 本文使用了Nuka Arctica邮轮船载声学多普勒流速剖面仪(Acoustic Doppler Current Profiler, ADCP)测量的上层海洋高空间分辨率流速资料。
11 |
12 | XXXXXXXX。
13 |
14 | \section{分析方法}
15 | \ensection{Analysis methods}
16 |
17 | \subsection{Wave-Vortex分解}
18 | \ensubsection{Wave-Vortex}
19 |
20 | 本文使用了Wave-Vortex分解方法对船载ADCP测量结果进行了分析,参照Bühler提出的波-涡分解方法,采用一维动能谱的Wave-Vortex动能谱分解办法。这种方法能够解决由空间尺度上波动和涡动的尺度重叠导致二者在空间谱上信号混杂的问题。但分解方法和其他湍流分析一样有严格的假设:(1)数据测量稳定均匀,(2)各向同性,(3)数据在观测空间尺度上具有周期性。
21 |
22 | 首先,我们将跨航迹流速和沿航迹动能谱通过Helmholtz分解,转化为旋转和辐散两部分,将其写成谱函数的形式:
23 |
24 | \begin{equation}
25 | k\frac{\mathrm{d}\widehat{F}^{\phi}}{\mathrm{d}k}-\mathrm{d}\widehat{F}^{\psi}=-\frac{\widehat{C}^{v}}{2}
26 | \end{equation}
27 |
28 | \begin{equation}
29 | k\frac{\mathrm{d}\widehat{F}^{\psi}}{\mathrm{d}k}-\mathrm{d}\widehat{F}^{\phi}=-\frac{\widehat{C}^{u}}{2}
30 | \end{equation}
31 |
32 | {\color{red}``对于别人论文里的公式,可以截图粘贴到豆包里转化为 latex 代码,效率非常高"}
33 |
34 | 式中,($\widehat{F}{\phi}$, $\widehat{F}{\psi}$)为计算过程谱函数,($\widehat{C}^{u}$, $\widehat{C}^{v}$)分别为沿航迹函数和跨航迹函数,$k$为水平波数……
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/contents/section_03.tex:
--------------------------------------------------------------------------------
1 | \chapter{Iceland Basin和Irminger Sea动能波数谱的季节特征}
2 | \enchapter{Iceland Basin and Irminger Sea}
3 |
4 | 本文首先使用船载SADCP数据,对Iceland Basin和Irminger Sea两个海盆的动能谱特征进行了分析。论文的主要研究对象是中尺度过程、亚中尺度过程和近惯性内波之间的相互作用,而亚中尺度过程和中尺度过程的定义是依据地转关系在空间上对海洋物理过程的划分,因此对他们的研究将从空间特征着手……
5 |
6 | \section{动能谱的总体特征}
7 | \ensection{Overall characteristics of the kinetic energy spectrum}
8 |
9 | 在具体分析动能谱的季节变化之前,本文对所有可用船载航迹的动能谱进行垂向平均后取他们的均值,得到Iceland Basin和Irminger Sea具有代表性的动能谱。Iceland Basin的动能谱在……
10 |
11 | \section{动能量谱的季节变化}
12 | \ensection{Seasonal variation of the kinetic energy spectrum}
13 |
14 |
15 | \begin{table}[htb]
16 | \centering\small
17 | \tablecaption{船载ADCP仪器设置}{Setup of shipborne ADCP instruments}
18 | \label{tab:exampletable}
19 | \begin{tabular}{ccccc}
20 | \hline\toprule
21 | ~~~ 观测时期 ~~~ & ~~~ 空间分辨率 ~~~ & ~~~ 时间分辨率 ~~~ & ~~~ 观测深度 ~~~ & ~~~ 仪器频率 ~~~ \\
22 | (年) & (km) & (min) & (m) & (kHz) \\
23 | \midrule
24 | 1998--2022 & 3 & 7 & 400 & 150 \\
25 | 无线表 & 1.5 & 5 & 800 & 75 \\
26 | \bottomrule\hline
27 | \end{tabular}
28 | \end{table}
29 |
30 |
--------------------------------------------------------------------------------
/contents/section_04.tex:
--------------------------------------------------------------------------------
1 | \chapter{引用文献演示}
2 | \enchapter{Citation demo}
3 |
4 | \section{文献引用测试章节}
5 | \ensection{Citation testing demo}
6 |
7 | 学校前身是创办于1924年的私立青岛大学\cite{wc24arfm}。1930年,在省立山东大学和私立青岛大学的基础上成立国立青岛大学。后历经国立山东大学、山东大学时期\cite{zz19nc},1958年山东大学主体迁往济南\cite{lj15hyxb},以留青的海洋系、水产系、地质系、生物系等为基础,于1959年3月成立山东海洋学院。1960年被确定为全国13所重点综合性大学之一。1988年更名为青岛海洋大学。2002年更名为中国海洋大学。
8 |
9 | Lorem ipsum dolor sit amet\cite{kj25tvcg}, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua\cite{lcy24tgrs}. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
--------------------------------------------------------------------------------
/contents/section_05.tex:
--------------------------------------------------------------------------------
1 | \chapter{结论与展望}
2 | \enchapter{Conclusion and future work}
3 |
4 | \section{结论}
5 | \ensection{Conclusion}
6 |
7 | 北大西洋作为大西洋深层水的发源地,对全球气候变化有着重要影响[6]。本文围绕中尺度过程、亚中尺度过程和近惯性内波之间的能量交换过程展开了一系列研究。首先,利用船载ADCP对Iceland Basin 和Irminger Sea的中尺度-亚中尺度运动和海洋内波的动能波数谱进行研究。讨论了中尺度过程、亚中尺度过程之间的转换尺度影响因素,季节变化特征和深度依赖性。其次,本文结合平衡流波数谱和三阶结构函数深入分析了两个海盆的能量串级和能量注入问题。进一步,由于亚中尺度能量注入问题和海洋斜压不稳定密切相关,本文利用Irminger Sea 阵列观测周围的水下滑翔机数据分析了亚中尺度锋面的季节特征和变化规律,并进一步分析了海洋多种类型的不稳定。最后,利用Iceland Basin 和Irminger Sea锚定浮标观测序列分析了中尺度、亚中尺度和近惯性内波之间的能量交换特征。本文得到以下结论:
8 |
9 | 北大西洋中尺度-亚中尺度运动与海洋内波,存在明显的季节变化特征。中尺度—亚中尺度运动在冬季动能谱斜率更接近于-5/3,在其他季节接近-3,说明除冬季外,上层海洋主要由准地转湍流过程调控。海洋内波在冬季最强,在夏季最弱。二者之间的转换尺度在夏季最小为28千米,在冬季海洋内波在各个尺度上超过中尺度-亚中尺度运动。这种转换尺度的巨大变化主要由海洋内波过程引……
10 |
11 | \section{展望}
12 | \ensection{Future work}
13 |
14 | 北大西洋作为大西洋深层水的发源地,对全球气候变化有着重要影响[6]。本文围绕中尺度过程、亚中尺度过程和近惯性内波之间的能量交换过程展开了一系列研究。首先,利用船载ADCP对Iceland Basin 和Irminger Sea的中尺度-亚中尺度运动和海洋内波的动能波数谱进行研究。讨论了中尺度过程、亚中尺度过程之间的转换尺度影响因素,季节变化特征和深度依赖性。其次,本文结合平衡流波数谱和三阶结构函数深入分析了两个海盆的能量串级和能量注入问题。进一步,由于亚中尺度能量注入问题和海洋斜压不稳定密切相关,本文利用Irminger Sea 阵列观测周围的水下滑翔机数据分析了亚中尺度锋面的季节特征和变化规律,并进一步分析了海洋多种类型的不稳定。最后,利用Iceland Basin 和Irminger Sea锚定浮标观测序列分析了中尺度、亚中尺度和近惯性内波之间的能量交换特征。本文得到以下结论:
15 |
16 | 北大西洋中尺度-亚中尺度运动与海洋内波,存在明显的季节变化特征。中尺度—亚中尺度运动在冬季动能谱斜率更接近于-5/3,在其他季节接近-3,说明除冬季外,上层海洋主要由准地转湍流过程调控。海洋内波在冬季最强,在夏季最弱。二者之间的转换尺度在夏季最小为28千米,在冬季海洋内波在各个尺度上超过中尺度-亚中尺度运动。这种转换尺度的巨大变化主要由海洋内波过程引……
--------------------------------------------------------------------------------
/data/abstract_ch.tex:
--------------------------------------------------------------------------------
1 | % 中文摘要
2 | \pagenumbering{1}
3 | \begin{abstract}
4 |
5 | 海洋中尺度涡旋是海洋中动能串级的重要枢纽,占据海洋70\%以上的海洋动能。关于中尺度涡旋动能来源与耗散问题,是影响海洋动力学平衡的重要问题。目前研究认为,中尺度涡旋能够与亚中尺度过程和海洋近惯性内波相互作用,是解决中尺度涡旋动能来源与耗散的潜在渠道。目前对于三者之间相互作用研究多集中于中纬度地区和南大洋,尚缺乏对北大西洋亚极地海区的系统研究。
6 |
7 | 北大西洋亚极地区域由于强烈的混合层深度变化和风暴,存在丰富的中尺度、亚中尺度过程和近惯性内波,这些过程之间有着复杂的相互作用关系,能够调节上层海洋混合、再层化以及深层对流等过程。因此,对北大西洋中尺度涡旋、亚中尺度过程以及海洋内波之间能量交换过程的研究是十分必要的,有助于提高。
8 |
9 | 海洋中尺度涡旋是海洋中动能串级的重要枢纽,占据海洋70\%以上的海洋动能。关于中尺度涡旋动能来源与耗散问题,是影响海洋动力学平衡的重要问题。目前研究认为,中尺度涡旋能够与亚中尺度过程和海洋近惯性内波相互作用,是解决中尺度涡旋动能来源与耗散的潜在渠道。目前对于三者之间相互作用研究多集中于中纬度地区和南大洋,尚缺乏对北大西洋亚极地海区的系统研究。
10 |
11 | 北大西洋亚极地区域由于强烈的混合层深度变化和风暴,存在丰富的中尺度、亚中尺度过程和近惯性内波,这些过程之间有着复杂的相互作用关系,能够调节上层海洋混合、再层化以及深层对流等过程。因此,对北大西洋中尺度涡旋、亚中尺度过程以及海洋内波之间能量交换过程的研究是十分必要的,有助于提高。
12 |
13 | 海洋中尺度涡旋是海洋中动能串级的重要枢纽,占据海洋70\%以上的海洋动能。关于中尺度涡旋动能来源与耗散问题,是影响海洋动力学平衡的重要问题。目前研究认为,中尺度涡旋能够与亚中尺度过程和海洋近惯性内波相互作用,是解决中尺度涡旋动能来源与耗散的潜在渠道。目前对于三者之间相互作用研究多集中于中纬度地区和南大洋,尚缺乏对北大西洋亚极地海区的系统研究。
14 |
15 | 北大西洋亚极地区域由于强烈的混合层深度变化和风暴,存在丰富的中尺度、亚中尺度过程和近惯性内波,这些过程之间有着复杂的相互作用关系,能够调节上层海洋混合、再层化以及深层对流等过程。因此,对北大西洋中尺度涡旋、亚中尺度过程以及海洋内波之间能量交换过程的研究是十分必要的,有助于提高。
16 |
17 | 海洋中尺度涡旋是海洋中动能串级的重要枢纽,占据海洋70\%以上的海洋动能。关于中尺度涡旋动能来源与耗散问题,是影响海洋动力学平衡的重要问题。目前研究认为,中尺度涡旋能够与亚中尺度过程和海洋近惯性内波相互作用,是解决中尺度涡旋动能来源与耗散的潜在渠道。目前对于三者之间相互作用研究多集中于中纬度地区和南大洋,尚缺乏对北大西洋亚极地海区的系统研究。
18 |
19 | 北大西洋亚极地区域由于强烈的混合层深度变化和风暴,存在丰富的中尺度、亚中尺度过程和近惯性内波,这些过程之间有着复杂的相互作用关系,能够调节上层海洋混合、再层化以及深层对流等过程。因此,对北大西洋中尺度涡旋、亚中尺度过程以及海洋内波之间能量交换过程的研究是十分必要的,有助于提高。
20 |
21 | \noindent\textbf{关键词:}北大西洋亚极地区域;中尺度;亚中尺度
22 |
23 | \end{abstract}
24 |
--------------------------------------------------------------------------------
/data/abstract_en.tex:
--------------------------------------------------------------------------------
1 | \begin{enabstract}
2 |
3 | Mesoscale eddies in the ocean are an important hub of energy cascade, accounting for over 70\% of the oceanic kinetic energy. The issue of the energy source and dissipation of mesoscale eddies is a significant problem that affects the balance of ocean dynamics. Current studies suggest that mesoscale eddies can interact with submesoscale processes and near-inertial internal waves, providing a potential channel to address the energy source and dissipation of mesoscale eddies. However, research on the interactions among the three is mostly concentrated in mid-latitudes and the Southern Ocean, and there is a lack of systematic study on the subpolar North Atlantic region.
4 |
5 | The subpolar North Atlantic region, with its strong variations in the depth of the mixed layer and storms, has rich mesoscale and submesoscale processes and near-inertial internal waves. These processes have complex interactions that can regulate upper ocean mixing, restratification, and deep convection. Therefore, it is essential to study the energy exchange processes among mesoscale eddies, submesoscale processes, and internal waves in the North Atlantic region to improve.
6 |
7 | Mesoscale eddies in the ocean are an important hub of energy cascade, accounting for over 70\% of the oceanic kinetic energy. The issue of the energy source and dissipation of mesoscale eddies is a significant problem that affects the balance of ocean dynamics. Current studies suggest that mesoscale eddies can interact with submesoscale processes and near-inertial internal waves, providing a potential channel to address the energy source and dissipation of mesoscale eddies. However, research on the interactions among the three is mostly concentrated in mid-latitudes and the Southern Ocean, and there is a lack of systematic study on the subpolar North Atlantic region.
8 |
9 | The subpolar North Atlantic region, with its strong variations in the depth of the mixed layer and storms, has rich mesoscale and submesoscale processes and near-inertial internal waves. These processes have complex interactions that can regulate upper ocean mixing, restratification, and deep convection. Therefore, it is essential to study the energy exchange processes among mesoscale eddies, submesoscale processes, and internal waves in the North Atlantic region to improve.
10 |
11 | Mesoscale eddies in the ocean are an important hub of energy cascade, accounting for over 70\% of the oceanic kinetic energy. The issue of the energy source and dissipation of mesoscale eddies is a significant problem that affects the balance of ocean dynamics. Current studies suggest that mesoscale eddies can interact with submesoscale processes and near-inertial internal waves, providing a potential channel to address the energy source and dissipation of mesoscale eddies. However, research on the interactions among the three is mostly concentrated in mid-latitudes and the Southern Ocean, and there is a lack of systematic study on the subpolar North Atlantic region.
12 |
13 | The subpolar North Atlantic region, with its strong variations in the depth of the mixed layer and storms, has rich mesoscale and submesoscale processes and near-inertial internal waves. These processes have complex interactions that can regulate upper ocean mixing, restratification, and deep convection. Therefore, it is essential to study the energy exchange processes among mesoscale eddies, submesoscale processes, and internal waves in the North Atlantic region to improve.
14 |
15 | \noindent\textbf{Key Words:} mesoscale; submesoscale
16 |
17 | \end{enabstract}
18 |
--------------------------------------------------------------------------------
/data/achievement.tex:
--------------------------------------------------------------------------------
1 | \begin{achievement}
2 |
3 | \par \vskip10pt
4 | {\fontsize{14pt}{21pt}\selectfont\heiti 一、发表的学术论文}
5 | \par \vskip10pt
6 |
7 | 学术论文1
8 |
9 | 学术论文2
10 |
11 | \par \vskip10pt
12 | {\fontsize{14pt}{21pt}\selectfont\heiti 二、申请及已获得的专利}
13 | \par \vskip10pt
14 |
15 | 专利1
16 |
17 | 专利2
18 |
19 |
20 | \par \vskip10pt
21 | {\fontsize{14pt}{21pt}\selectfont\heiti 三、参与的科研项目及获奖情况}
22 | \par \vskip10pt
23 |
24 | 获奖1
25 |
26 | 获奖2
27 |
28 |
29 | \end{achievement}
--------------------------------------------------------------------------------
/data/acknowledgement.tex:
--------------------------------------------------------------------------------
1 | \begin{ackonwlegmentback}
2 |
3 | 致谢中主要感谢导师和对论文工作有直接贡献或帮助的人士和单位。
4 |
5 | 一般致谢的内容有:
6 |
7 | (1)对国家科学基金、资助研究工作的奖学金基金、合同单位、资助或支持的企业、组织或个人;
8 |
9 | (2)对协助完成研究工作和提供便利条件的组织或个人;
10 |
11 | (3)对在研究工作中提出建议和提供帮助的人;
12 |
13 | (4)对给予转载和引用权的资料、图片、文献、研究思想和设想的所有者;
14 |
15 | (5)对其他应感谢的组织和个人;
16 |
17 | (6)致谢言语应谦虚诚恳,实事求是,建议字数不超过1000字。
18 |
19 | \end{ackonwlegmentback}
--------------------------------------------------------------------------------
/data/committee.tex:
--------------------------------------------------------------------------------
1 | % 学位论文答辩委员会页
2 | \begin{titlepage}
3 |
4 | \par \vskip10pt
5 | \centering{\fontsize{16pt}{24pt}\selectfont\heiti 学位论文答辩委员会}
6 | \par \vskip50pt
7 |
8 |
9 | \begin{table}[htbp]
10 | \centering
11 | \renewcommand\arraystretch{1.8}
12 | \begin{tabular}{|c|c|c|c|c|}
13 | \hline
14 | 答辩时间 & \multicolumn{4}{c|}{ ~~~ 年 ~~~ 月 ~~~ 日} \\ \hline
15 | 答辩地点 & \multicolumn{4}{c|}{}\\ \hline
16 | \multicolumn{5}{|c|}{答辩委员会组成}\\ \hline
17 | ~~~ 组成 ~~~ & ~~~ 姓名 ~~~ & ~~~ 专业技术职务 ~~~ & ~~~ 工作单位 ~~~ & ~~~~~ 签名 ~~~~~ \\ \hline
18 | 主席 & & & & \\ \hline
19 | \multirow{6}{*}{委员} & & & & \\ \cline{2-5}
20 | & & & & \\ \cline{2-5}
21 | & & & & \\ \cline{2-5}
22 | & & & & \\ \cline{2-5}
23 | & & & & \\ \cline{2-5}
24 | & & & & \\ \hline
25 | \end{tabular}
26 | \end{table}
27 |
28 |
29 | \end{titlepage}
30 |
--------------------------------------------------------------------------------
/data/cover.tex:
--------------------------------------------------------------------------------
1 | % 学位论文封面页
2 | \begin{titlepage}
3 |
4 | \noindent\textbf{\zihao{4}{分类号:} \hspace*{210pt} {学校代码:10423} \\ {UDC:} \hspace*{216pt} {学 ~~~ 号:}}
5 | \vskip50pt
6 | \par \vskip20pt
7 |
8 | % 中文标题
9 | \begin{spacing}{1.5}
10 | \centering{\fontsize{20pt}{30pt}\selectfont\heiti 北大西洋亚极地区域多尺度海洋过程能量交换}
11 | \par \vskip30pt
12 |
13 | % 英文标题
14 | \centering{\fontsize{20pt}{80pt}\selectfont\textbf{Energy Exchange among Multi-scale Processes in the Subpolar North Atlantic}}
15 | \end{spacing}
16 |
17 | % 作者
18 | \par\vskip110pt
19 | {~~~~~~~~~~~~ \ziju{0.65}\fontsize{14pt}{21pt}\selectfont\heiti 作 ~~~~~~~~~~ 者:}
20 | {\fontsize{14pt}{21pt}\selectfont 某某某}
21 |
22 | % 指导教师
23 | \par\vskip6pt
24 | {~~~~~~~~~~~~ \ziju{0.65}\fontsize{14pt}{21pt}\selectfont\heiti 指导教师:}
25 | {\fontsize{14pt}{21pt}\selectfont 某某某 ~ 教授}
26 | % 合作导师
27 | \par\vskip6pt
28 | {~~~~~~~~~~~~ \ziju{0.65}\fontsize{14pt}{21pt}\selectfont\heiti 合作导师:}
29 | {\fontsize{14pt}{21pt}\selectfont 某某某 ~ 教授}
30 | % 学位类型
31 | \par\vskip6pt
32 | {~~~~~~~~~~~~ \ziju{0.65}\fontsize{14pt}{21pt}\selectfont\heiti 学位类型:}
33 | {\fontsize{14pt}{21pt}\selectfont 学术学位}
34 |
35 | % 专业名称
36 | \par\vskip6pt
37 | {~~~~~~~~~~~~ \ziju{0.65}\fontsize{14pt}{21pt}\selectfont\heiti 专业名称:}
38 | {\fontsize{14pt}{21pt}\selectfont 计算机科学与技术}
39 |
40 | % 研究方向
41 | \par\vskip6pt
42 | {~~~~~~~~~~~~ \ziju{0.65}\fontsize{14pt}{21pt}\selectfont\heiti 研究方向:}
43 | {\fontsize{14pt}{21pt}\selectfont 计算机视觉与模式识别}
44 |
45 | %
46 | \par\vskip6pt
47 | {~~~~~~~~~~~~ \fontsize{14pt}{21pt}\selectfont\heiti 授予学位单位:}{\fontsize{14pt}{21pt}\selectfont ~中国海洋大学}
48 |
49 | \par\vskip80pt
50 | \centering{\fontsize{14}{32}\selectfont\heiti 日期:\today}
51 |
52 | \end{titlepage}
53 |
--------------------------------------------------------------------------------
/data/profile.tex:
--------------------------------------------------------------------------------
1 | \begin{profile}
2 |
3 | 主要包括姓名、性别、民族、出生年月、出生地;简要学习、工作经历;以及攻读学位期间获得的其他奖励(除攻读学位期间取得的与学位论文相关的成果之外)。个人简历一般应包含从本科起的教育经历和工作经历。示例:
4 |
5 | ××××年××月××日出生于××××。
6 |
7 | ××××年××月考入××大学××院(系)××专业,××××年××月本科毕业并获得××学学士学位。
8 |
9 | ××××年××月——××××年××月,在××大学××院(系)××学科学习并获得××学硕士学位。
10 |
11 | ××××年××月——××××年××月,在××大学××院(系)××学科攻读博士学位。
12 |
13 | 获奖情况:如获三好学生、优秀团干部、×奖学金等(不含科研学术获奖)。
14 |
15 | 工作经历:
16 |
17 | \end{profile}
18 |
--------------------------------------------------------------------------------
/data/statement.tex:
--------------------------------------------------------------------------------
1 | % 学位论文独创声明
2 | \begin{titlepage}
3 |
4 | \par\vskip30pt
5 | \begin{spacing}{1.5}
6 | \centering{\fontsize{16pt}{24pt}\selectfont\heiti 学位论文独创声明}
7 | \end{spacing}
8 |
9 | \par\vskip20pt
10 | 本人所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。除了文中加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得\underline{~~~~~~~~~~~~~~~~~~~~~~~(注:如没有其他需要特别声明的,本栏可空)}或其他教育机构的学位或证书使用过的材料。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。
11 |
12 | \par\vskip60pt
13 |
14 | 学位论文作者签名:\hspace*{160pt} 日期:\today
15 |
16 | \begin{spacing}{1.5}
17 | \centering{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
18 | \end{spacing}
19 |
20 | \begin{spacing}{1.5}
21 | \centering{\fontsize{16pt}{24pt}\selectfont\heiti 学位论文版权使用授权书}
22 | \end{spacing}
23 |
24 | \par\vskip20pt
25 | 本学位论文作者完全了解国家有关保留、使用学位论文的法律、法规和学校有关规定,并同意以下事项:
26 |
27 | 1.学校有权保留并向国家有关部门或机构送交本学位论文的复印件和电子版,允许论文被查阅和借阅;
28 |
29 | 2.学校可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编本学位论文;
30 |
31 | 3.学校可以基于教学及科研需要合理使用本学位论文。
32 |
33 | 需保密的学位论文在解密后适用本授权书。
34 |
35 | \par\vskip60pt
36 | 学位论文作者签名:\hspace*{160pt} 导师签名:
37 | \par\vskip20pt
38 | 日期:\today \hspace*{135pt} 日期:\today
39 |
40 | \end{titlepage}
41 |
--------------------------------------------------------------------------------
/img/20250219095840.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oucailab/OUC-LaTex-master/81133ac3b89d02315ee6357e5febd9aca5af49f4/img/20250219095840.jpg
--------------------------------------------------------------------------------
/img/fig_1_1_study_area.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oucailab/OUC-LaTex-master/81133ac3b89d02315ee6357e5febd9aca5af49f4/img/fig_1_1_study_area.jpg
--------------------------------------------------------------------------------
/img/fig_1_2_OSNAP.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oucailab/OUC-LaTex-master/81133ac3b89d02315ee6357e5febd9aca5af49f4/img/fig_1_2_OSNAP.jpg
--------------------------------------------------------------------------------
/main.tex:
--------------------------------------------------------------------------------
1 | \documentclass[pdf,oneside]{oucthesis}
2 | \setmainfont{TeX Gyre Termes} %设置英文Times New Roman
3 | \setmathfont{TeX Gyre Termes Math} %设置英文数学Times New Roman
4 | % pdf: 便于阅读的电子版,去除掉多余的空白页,加入超链接等
5 | % print:打印版本,添加空白页,便于双面打印,禁用超链接
6 |
7 |
8 |
9 | % ========================================
10 | %| 论文信息填写 |
11 | % ========================================
12 | \title{北大西洋亚极地区域多尺度海洋过程能量交换}
13 |
14 |
15 | % ========================================
16 | % 包引用
17 | % ========================================
18 | \usepackage{booktabs}
19 | \usepackage{multirow}
20 | \usepackage{setspace}
21 | \usepackage{amsthm}
22 | \usepackage{algorithm}
23 | \usepackage{algorithmicx}
24 | \usepackage{algpseudocode}
25 | \usepackage{caption}
26 | \captionsetup{font={small}}
27 |
28 | % 内容区域
29 | \begin{document}
30 |
31 | % 封面
32 | \include{data/cover}
33 | % 学位论文答辩委员会
34 | \include{data/committee.tex}
35 | % 独创性声明
36 | \include{data/statement.tex}
37 |
38 | % 从摘要开始,设置行距为20磅
39 | \setlength{\baselineskip}{20pt}
40 |
41 | % 中文摘要
42 | \include{data/abstract_ch.tex}
43 | % 英文摘要
44 | \include{data/abstract_en.tex}
45 |
46 |
47 |
48 |
49 |
50 | % 目录
51 | \tableofcontents % 中文目录
52 | \tableofengcontents % 英文目录
53 |
54 |
55 | % 图表目录
56 | \newcommand{\loflabel}{图}
57 | \renewcommand{\numberline}[1]{\loflabel~#1\hspace*{1em}}
58 | \renewcommand{\listfigurename}{插图清单}
59 | \begin{center}
60 | \clearpage
61 | \phantomsection\addcontentsline{toc}{chapter}{插图清单}
62 | \phantomsection\addengcontent{chapter}{Figure list}
63 | {\listoffigures}
64 | \end{center}
65 |
66 |
67 | \newcommand{\lotlabel}{表}
68 | \renewcommand{\numberline}[1]{\lotlabel~#1\hspace*{1em}}
69 | \renewcommand{\listtablename}{表格清单}
70 | \begin{center}
71 | \clearpage
72 | \phantomsection\addcontentsline{toc}{chapter}{表格清单}
73 | \phantomsection\addengcontent{chapter}{Table list}
74 | {\listoftables}
75 | \end{center}
76 |
77 |
78 |
79 | % 正文
80 | \mainmatter
81 | \pagenumbering{arabic}
82 |
83 |
84 | \include{contents/section_01}
85 | \include{contents/section_02}
86 | \include{contents/section_03}
87 | \include{contents/section_04}
88 | \include{contents/section_05}
89 |
90 | % 参考文献
91 | \phantomsection\addengcontent{chapter}{References}
92 | \bibliographystyle{oucauthoryear}
93 | \bibliography{cite}
94 |
95 | % 学术成果
96 | \phantomsection\addengcontent{chapter}{Published papers and research results}
97 | \include{data/achievement.tex}
98 |
99 | % 致谢
100 | \phantomsection\addengcontent{chapter}{Acknowledgements}
101 | \include{data/acknowledgement.tex}
102 |
103 | % 作者简介
104 | \phantomsection\addengcontent{chapter}{Resume}
105 | \include{data/profile.tex}
106 |
107 | \end{document}
108 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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,twoside]{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 | \RequirePackage{xstring}
46 | \RequirePackage{geometry}
47 | \RequirePackage{ctex}
48 | \RequirePackage{letltxmacro}
49 | \ifouc@pdf
50 | \RequirePackage{hyperref}
51 | \else
52 | \fi
53 |
54 | % ===============================================
55 | % Changable parameters
56 | \newcommand\ouc@atendpackage{\csname ctex_at_end_package:nn\endcsname}
57 | \ouc@atendpackage{hyperref}{
58 | \hypersetup{
59 | bookmarksnumbered = true,
60 | bookmarksopen = true,
61 | bookmarksopenlevel = 1,
62 | linktoc = all,
63 | unicode = true,
64 | psdextra = true,
65 | }
66 | \ifouc@pdf
67 | \hypersetup{
68 | colorlinks = true,
69 | allcolors = blue,
70 | }
71 | \else
72 | \hypersetup{hidelinks}
73 | \fi
74 | }
75 |
76 | % ===============================================
77 | % Word Count
78 | \newcommand{\wordcount}[0]{%
79 | \immediate\write18{texcount -1 -sum main.tex > words.count }%
80 | \input{words.count}%
81 | }
82 |
83 | % ===============================================
84 | % Custom Command
85 |
86 | \renewenvironment{titlepage}{%
87 | \clearpage
88 | \thispagestyle{empty}%
89 | }{\clearpage}
90 |
91 | \newcommand\blankpage{%
92 | \null
93 | \thispagestyle{empty}%
94 | \addtocounter{page}{-1}%
95 | \newpage
96 | }
97 |
98 | \newcommand\zhspace[1][1]{\hspace{#1\ccwd}}
99 |
100 | % ===============================================
101 | % Fonts Setting
102 |
103 | \newdimen\bp@
104 | \bp@=1bp
105 | \renewcommand\normalsize{%
106 | \@setfontsize\normalsize{12\bp@}{23\bp@}%
107 | \abovedisplayskip 12\bp@ \@plus3\bp@ \@minus7\bp@
108 | \abovedisplayshortskip \z@ \@plus3\bp@
109 | \belowdisplayshortskip 6.5\bp@ \@plus3.5\bp@ \@minus3\bp@
110 | \belowdisplayskip \abovedisplayskip
111 | \let\@listi\@listI
112 | }
113 | \normalsize
114 | \renewcommand\small{%
115 | \@setfontsize\small{10.5\bp@}{19.25\bp@}%
116 | \abovedisplayskip 10.5\bp@ \@plus3\bp@ \@minus6\bp@
117 | \abovedisplayshortskip \z@ \@plus3\bp@
118 | \belowdisplayshortskip 6.5\bp@ \@plus3.5\bp@ \@minus3\bp@
119 | \belowdisplayskip \abovedisplayskip
120 | }
121 | \renewcommand\footnotesize{%
122 | \@setfontsize\footnotesize{9\bp@}{16.5\bp@}%
123 | \abovedisplayskip 9\bp@ \@plus2\bp@ \@minus5\bp@
124 | \abovedisplayshortskip \z@ \@plus3\bp@
125 | \belowdisplayshortskip 6\bp@ \@plus3\bp@ \@minus3\bp@
126 | \belowdisplayskip \abovedisplayskip
127 | }
128 | \renewcommand\scriptsize{\@setfontsize\scriptsize{7.5\bp@}{13.75\bp@}}
129 | \renewcommand\tiny{\@setfontsize\tiny{6.5\bp@}{11.92\bp@}}
130 | \renewcommand\large{\@setfontsize\large{15\bp@}{27.5\bp@}}
131 | \renewcommand\Large{\@setfontsize\Large{18\bp@}{33\bp@}}
132 | \renewcommand\LARGE{\@setfontsize\LARGE{22\bp@}{40.33\bp@}}
133 | \renewcommand\huge{\@setfontsize\huge{24\bp@}{44\bp@}}
134 | \renewcommand\Huge{\@setfontsize\Huge{26\bp@}{47.67\bp@}}
135 |
136 | \linespread{1}\selectfont
137 | \newcommand\ouc@setchinese{%
138 | \xeCJKResetPunctClass
139 | }
140 | \newcommand\ouc@setenglish{%
141 | \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}%
142 | \xeCJKDeclareCharClass{HalfRight}{%
143 | "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A%
144 | }%
145 | }
146 | \ouc@setchinese
147 |
148 | % ===============================================
149 | % Page Format
150 |
151 | \geometry{
152 | paper = a4paper,
153 | vmargin = 2.7cm,
154 | hmargin = 2.7cm,
155 | headheight = 0.75cm,
156 | headsep = 0.29cm,
157 | footskip = 0.79cm,
158 | }
159 | \pagestyle{fancy}
160 | \let\sectionmark\@gobble
161 | \renewcommand\headrulewidth{0.5\p@}
162 |
163 | % ===============================================
164 | % Header Format
165 | \newcommand\ouc@wordcount{\wordcount}
166 |
167 | \newcommand\ouc@hf@font{\fontsize{10.5\bp@}{12\bp@}\selectfont}
168 | \newcommand\ouc@header{\@title}
169 | \fancypagestyle{title}{%
170 | \fancyhf{}%
171 | \fancyhead[CO]{\ouc@hf@font 中国海洋大学硕士学位论文} % 奇数页页眉
172 | \fancyhead[CE]{\ouc@hf@font\ouc@header} % 偶数页页眉
173 | \fancyfoot[C]{\ouc@hf@font\thepage}%
174 | \renewcommand{\headrulewidth}{0.4pt} % 添加页眉下划线
175 | \ifouc@count
176 | \fancyfoot[R]{\color{gray}\ouc@hf@font \ouc@wordcount}%
177 | \fi
178 | }
179 | \fancypagestyle{plain}{%
180 | \fancyhf{}%
181 | \renewcommand{\headrulewidth}{0pt}
182 | \fancyhead[C]{}
183 | \fancyfoot[C]{\ouc@hf@font\thepage}%
184 | }
185 |
186 |
187 | % ===============================================
188 | % Pre Content Format
189 | \ctexset{
190 | chapter = {
191 | name = {,},
192 | format = \centering\sffamily\fontsize{16\bp@}{26.67\bp@}\selectfont,
193 | nameformat = {},
194 | number = \thechapter,
195 | aftername = \hspace{\ccwd},
196 | beforeskip = 24\bp@,
197 | afterskip = 18\bp@,
198 | fixskip = true,
199 | },
200 | }
201 |
202 | % ===============================================
203 | % Define Information
204 |
205 | \newcommand*{\entitle}[1]{
206 | \def\ouc@entitle{#1}
207 | }
208 | \newcommand*{\advisor}[1]{
209 | \def\ouc@advisor{#1}
210 | }
211 | \newcommand*{\mythanks}[1]{
212 | \def\ouc@mythanks{#1}
213 | }
214 |
215 | \newcommand*{\keywords}[1]{
216 | \def\ouc@keywords{#1}
217 | }
218 |
219 | \newcommand*{\enkeywords}[1]{
220 | \def\ouc@enkeywords{#1}
221 | }
222 | % ===============================================
223 | % Define Page Style
224 |
225 |
226 | % Abstract
227 | \NewDocumentCommand\ouc@chapter{o m}{%
228 | \IfValueTF{#1}% 检查是否提供了可选参数
229 | {
230 | \chaptermark{#1}% 页眉使用可选参数
231 | \makeatletter
232 | \c@secnumdepth=-1 % 抑制章节编号
233 | \makeatother
234 | \chapter[#1]{#2}% 目录显示 #1,正文显示 #2
235 | }{
236 | \chaptermark{#2}% 页眉使用必选参数
237 | \makeatletter
238 | \c@secnumdepth=-1 % 抑制章节编号
239 | \makeatother
240 | \chapter{#2}%
241 | }%
242 | }
243 | \newcommand\pagenumberingnoreset[1]{\gdef\thepage{\csname @#1\endcsname\c@page}}
244 |
245 |
246 | % Abstract
247 | \let\standardclearpage\clearpage
248 | \newenvironment{abstract}{%
249 | \clearpage
250 | \pagestyle{plain}
251 | \pagenumberingnoreset{Roman}
252 | \ouc@setchinese
253 | \let\clearpage\relax
254 | \ouc@chapter[摘要]{摘 ~~~~ 要}
255 | \let\clearpage\standardclearpage
256 | \vspace{1em}
257 | }{
258 | \noindent\hangindent=4\ccwd\relax
259 | \clearpage
260 | \pagenumberingnoreset{arabic}
261 | }
262 |
263 | \newenvironment{enabstract}{%
264 | \clearpage
265 | \pagestyle{plain}
266 | \pagenumberingnoreset{Roman}
267 | \ouc@setenglish
268 | \let\clearpage\relax
269 | \ouc@chapter[Abstract]{ABSTRACT}
270 | \let\clearpage\standardclearpage
271 | \vspace{1em}
272 | }{
273 | \noindent\hangindent=4\ccwd\relax
274 | \clearpage
275 | \pagenumberingnoreset{arabic}
276 | }
277 |
278 |
279 | % TOC: 英文目录设置
280 | \newcommand\engcontentsname{Contents}
281 | \newcommand\tableofengcontents{%
282 | \pagestyle{plain}
283 | \pagenumberingnoreset{Roman}
284 | \renewcommand{\headrulewidth}{0pt} % 取消页眉横线
285 | \chapter*{\engcontentsname}%
286 | \@starttoc{toe}%
287 | \clearpage
288 | }
289 | \newcommand\addengcontents[2]{%
290 | \addcontentsline{toe}{#1}{\protect\numberline{\csname the#1\endcsname}#2}}
291 | \newcommand\addengcontent[2]{\addcontentsline{toe}{#1}{#2}}
292 | \newcommand\enchapter[1]{\addengcontents{chapter}{#1}}
293 | \newcommand\ensection[1]{\addengcontents{section}{#1}}
294 | \newcommand\ensubsection[1]{\addengcontents{subsection}{#1}}
295 |
296 |
297 |
298 | % TOC: 中文目录格式设置
299 | \renewcommand{\contentsname}{目\quad\quad 录}
300 | \renewcommand\tableofcontents{%
301 | \pagestyle{plain}
302 | \pagenumberingnoreset{Roman}
303 | \renewcommand{\headrulewidth}{0pt} % 取消页眉横线
304 | \chapter*{\contentsname}%
305 | \@starttoc{toc}%
306 | \clearpage
307 | }
308 |
309 | \newcommand\ouc@leaders{\titlerule*[4\bp@]{\textperiodcentered}}
310 |
311 | \titlecontents{chapter}
312 | [\z@]{\fontsize{14\bp@}{25.67\bp@}\selectfont}
313 | {\contentspush{\thecontentslabel\unskip\hspace{\ccwd}}}{}
314 | {\unskip\hspace{\ccwd}\ouc@leaders\contentspage}
315 | \titlecontents{section}
316 | [\ccwd]{\normalsize}
317 | {\contentspush{\thecontentslabel\hspace{\ccwd}}}{}
318 | { \ouc@leaders\contentspage}
319 | \titlecontents{subsection}
320 | [2\ccwd]{\normalsize}
321 | {\contentspush{\thecontentslabel\hspace{\ccwd}}}{}
322 | { \ouc@leaders\contentspage}
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 | % ===============================================
333 | % Main Content Format
334 |
335 | \renewcommand\chapter{%
336 | \if@openright\cleardoublepage\else\clearpage\fi
337 | \global\@topnum\z@
338 | \@afterindenttrue
339 | \secdef\@chapter\@schapter
340 | }
341 | \renewcommand\mainmatter{
342 | \clearpage
343 | \pagestyle{title}
344 | \setcounter{page}{1}
345 | \ctexset{
346 | chapter = {
347 | format = \sffamily\fontsize{16\bp@}{26.67\bp@}\selectfont\centering,
348 | aftername = \zhspace[0.5],
349 | beforeskip = 28pt,
350 | afterskip = 18pt,
351 | fixskip = false,
352 | },
353 | section = {
354 | format = \sffamily\fontsize{14\bp@}{25.67\bp@}\selectfont,
355 | aftername = \zhspace[0.5],
356 | beforeskip = 24pt,
357 | afterskip = 6pt,
358 | fixskip = false,
359 | },
360 | subsection = {
361 | format = \sffamily\fontsize{12\bp@}{22\bp@}\selectfont,
362 | aftername = \zhspace[0.5],
363 | beforeskip = 12pt,
364 | afterskip = 6pt,
365 | fixskip = false,
366 | indent = \z@,
367 | },
368 | subsubsection = {
369 | format = \rmfamily\fontsize{12\bp@}{22\bp@}\selectfont,
370 | aftername = \zhspace[0.5],
371 | fixskip = false,
372 | indent = \ccwd,
373 | },
374 | paragraph = {
375 | format = \rmfamily\fontsize{12\bp@}{20\bp@}\selectfont,
376 | aftername = \zhspace[0],
377 | fixskip = false,
378 | indent = \ccwd,
379 | },
380 | }
381 | }
382 |
383 | % Caption Stype
384 | \renewcommand{\thetable}{\thechapter-\arabic{table}~}
385 | \renewcommand{\thefigure}{\thechapter-\arabic{figure}~}
386 | \counterwithin{algorithm}{chapter}
387 | \renewcommand{\thealgorithm}{\thechapter-\arabic{algorithm}}
388 | \floatname{algorithm}{算法}
389 | \DeclareCaptionLabelSeparator{space}{ }
390 | \captionsetup{
391 | labelsep=space
392 | }
393 |
394 |
395 | % 自定义图标题格式
396 | \newcommand{\figurecaption}[2]{%
397 | % \vspace{4pt}
398 | \caption[#1]{%
399 | \centering \quad #1 \\[6pt] % 在中文和英文之间增加6pt的垂直间距
400 | \centering \textnormal{Fig.}~\thefigure\quad #2
401 | }
402 | }
403 |
404 | % 自定义表格标题格式
405 | \newcommand{\tablecaption}[2]{%
406 | \caption[#1]{%
407 | \centering \quad #1 \\[6pt] % 在中文和英文之间增加6pt的垂直间距
408 | \centering \textnormal{Table.}~\thetable\quad #2 \\[6pt]
409 | }
410 | }
411 |
412 | % 设置中英文标题格式
413 | \captionsetup[figure]{
414 | labelsep=space, % 中文标题和编号之间空格
415 | format=hang, % 标题悬挂
416 | singlelinecheck=false, % 允许多行显示
417 | font={small}, % 小号字体
418 | position=below, % 标题放在图片下方
419 | skip=5pt % 图形与标题之间的间距
420 | }
421 |
422 | \captionsetup[table]{
423 | labelsep=space,
424 | format=hang,
425 | singlelinecheck=false,
426 | font={small},
427 | position=below,
428 | skip=5pt
429 | }
430 |
431 |
432 | \renewcommand{\theequation}{\arabic{chapter}-\arabic{equation}}
433 | \RequirePackage{mathtools}
434 | \newtagform{test}[]{(}{)}
435 | \usetagform{test}
436 |
437 | % ===============================================
438 | % Tail Content Format
439 | \newcommand\makeafter{
440 | \clearpage
441 | \ctexset{
442 | chapter = {
443 | name = {,},
444 | format = \centering\sffamily\fontsize{14\bp@}{25.67\bp@}\selectfont,
445 | nameformat = {},
446 | number = \thechapter,
447 | aftername = \hspace{\ccwd},
448 | beforeskip = 24\bp@,
449 | afterskip = 18\bp@,
450 | fixskip = true,
451 | },
452 | section = {
453 | name = {,},
454 | format = \centering\sffamily\bfseries\normalsize\selectfont,
455 | nameformat = {},
456 | number = \thechapter,
457 | aftername = \hspace{\ccwd},
458 | beforeskip = 24\bp@,
459 | afterskip = 18\bp@,
460 | fixskip = true,
461 | },
462 | }
463 | }
464 |
465 | \newcommand\bibstyle@super{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
466 | \citestyle{super}
467 | \renewcommand\bibfont{\fontsize{10.5\bp@}{20\bp@}\selectfont}
468 | \setlength{\bibsep}{0\p@ \@plus.2\p@}
469 | \setlength{\bibhang}{2\ccwd}
470 | \renewcommand\@biblabel[1]{[#1]\hfill}
471 |
472 | \renewcommand\bibsection{%
473 | \makeafter
474 | \ouc@chapter{\bibname}%
475 | }
476 |
477 | \newenvironment{ackonwlegmentback}{%
478 | \clearpage
479 | \makeafter
480 | \ouc@setchinese
481 | \ouc@chapter[致谢]{致\zhspace[2]谢}
482 | }{
483 | \clearpage
484 | }
485 |
486 | \newenvironment{achievement}{%
487 | \clearpage
488 | \makeafter
489 | \ouc@setchinese
490 | \ouc@chapter{攻读硕士学位期间取得的研究成果}
491 | }{\clearpage}
492 |
493 | \newenvironment{profile}{%
494 | \clearpage
495 | \makeafter
496 | \ouc@setchinese
497 | \ouc@chapter{作者简介}
498 | }{\clearpage}
499 |
500 |
501 |
502 |
503 |
504 |
--------------------------------------------------------------------------------