diff options
author | Norbert Preining <norbert@preining.info> | 2024-05-25 03:00:53 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-05-25 03:00:53 +0000 |
commit | 737e568a228eca50e9aeabe3116e1fe8116d27d5 (patch) | |
tree | 37a2c52f123e7822ce21f171f8c628aa9fb2288e /macros/unicodetex/latex | |
parent | 963914ddc7252b9f6d59db0e1d393f28c658917b (diff) |
CTAN sync 202405250300
Diffstat (limited to 'macros/unicodetex/latex')
16 files changed, 12113 insertions, 0 deletions
diff --git a/macros/unicodetex/latex/nxuthesis/README.md b/macros/unicodetex/latex/nxuthesis/README.md new file mode 100644 index 0000000000..d3c68f8210 --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/README.md @@ -0,0 +1,13 @@ + +# NxuThesis + +**NxuThesis** 是 **N**ing**x**ia **U**niversity **Thesis** LaTeX Template 的缩写。 + +此宏包旨在建立一个简单易用的宁夏大学学位论文 LaTeX 模板 + + +# NxuThesis + +**NxuThesis** is an abbreviation of **N**ing**x**ia **U**niversity **Thesis** LaTeX Template. + +This package establishes a simple and easy-to-use LaTeX template for Ningxia dissertations. diff --git a/macros/unicodetex/latex/nxuthesis/chapter/abstract.tex b/macros/unicodetex/latex/nxuthesis/chapter/abstract.tex new file mode 100644 index 0000000000..4555a9130d --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/chapter/abstract.tex @@ -0,0 +1,37 @@ +% 中英文摘要和关键字 + +\begin{abstract} + 论文的摘要是对论文研究内容和成果的高度概括。 + 摘要应对论文所研究的问题及其研究目的进行描述,对研究方法和过程进行简单介绍,对研究成果和所得结论进行概括。 + 摘要应具有独立性和自明性,其内容应包含与论文全文同等量的主要信息。 + 使读者即使不阅读全文,通过摘要就能了解论文的总体内容和主要成果。 + + 论文摘要的书写应力求精确、简明。 + 切忌写成对论文书写内容进行提要的形式,尤其要避免“第 1 章……;第 2 章……;……”这种或类似的陈述方式。 + + 关键词是为了文献标引工作、用以表示全文主要内容信息的单词或术语。 + 关键词不超过 5 个,每个关键词中间用分号分隔。 + + % 关键词用“英文逗号”分隔,输出时会自动处理为正确的分隔符 + \nxusetup{ + keywords = {关键词 1, 关键词 2, 关键词 3, 关键词 4, 关键词 5}, + } +\end{abstract} + +\begin{abstract*} + An abstract of a dissertation is a summary and extraction of research work and contributions. + Included in an abstract should be description of research topic and research objective, brief introduction to methodology and research process, and summary of conclusion and contributions of the research. + An abstract should be characterized by independence and clarity and carry identical information with the dissertation. + It should be such that the general idea and major contributions of the dissertation are conveyed without reading the dissertation. + + An abstract should be concise and to the point. + It is a misunderstanding to make an abstract an outline of the dissertation and words “the first chapter”, “the second chapter” and the like should be avoided in the abstract. + + Keywords are terms used in a dissertation for indexing, reflecting core information of the dissertation. + An abstract may contain a maximum of 5 keywords, with semi-colons used in between to separate one another. + + % Use comma as separator when inputting + \nxusetup{ + keywords* = {keyword 1, keyword 2, keyword 3, keyword 4, keyword 5}, + } +\end{abstract*}
\ No newline at end of file diff --git a/macros/unicodetex/latex/nxuthesis/chapter/acknowledgements.tex b/macros/unicodetex/latex/nxuthesis/chapter/acknowledgements.tex new file mode 100644 index 0000000000..b9efd9a59c --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/chapter/acknowledgements.tex @@ -0,0 +1,10 @@ + +\begin{acknowledgements} + 衷心感谢导师×××教授和水利系××教授对本人的精心指导。他们的言传身教将使我终生受益。 + + 在中国水利水电科学研究院进行九个月的合作研究期间,承蒙××教授热心指导与帮助,不胜感激。 + + 感谢×××××实验室主任×××教授,以及实验室全体老师和同窗们学的热情帮助和支持! + + 本课题承蒙国家自然科学基金资助,特此致谢。 +\end{acknowledgements} diff --git a/macros/unicodetex/latex/nxuthesis/chapter/chap01.tex b/macros/unicodetex/latex/nxuthesis/chapter/chap01.tex new file mode 100644 index 0000000000..665185809f --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/chapter/chap01.tex @@ -0,0 +1,171 @@ +\chapter{宁夏大学学位论文书写规范} + +研究生学位论文是研究生科学研究工作的全面总结, 是描述其研究成果、代表其研究水平的重要学术文献资料,是申请和授予相应学位的基本依据。学位论文撰写是研究生培养过程的重要环节和基本训练之一,必须按照确定的规范认真执行。指导教师应加强指导,严格把关。 + +论文撰写应符合国家及各专业部门制定的有关标准,符合汉语语法规范。 + +硕士和博士学位论文,除在字数、理论研究的深度及创造性成果等方面的要求不同外,对其撰写规范的要求基本一致。 +为此,根据《中华人民共和国国家标准科学技术报告、学位论文和学术论文的编写格式》结合兄弟院校的具体作法,制定如下规定。 + +\section{学位论文版式、格式} + +\begin{enumerate} + \item 论文开本及版芯\\ + 论文开本大小:210mm×297mm(A4纸)\\ + 版芯要求:左边距:30mm,右边距:25mm,上边距:30mm,下边距:25mm,页眉边距:23mm,页脚边距:18mm + \item 除外语类专业外,论文用中文撰写 + \item 标题:论文分三级标题\\ + 一级标题:黑体,三号或16pt,段前、段后间距为1行\\ + 二级标题:黑体,四号或14pt,段前、段后间距为1行\\ + 三级标题:黑体,小四号或12pt,段前、段后间距为1行\\ + 上述段前、段后间距可适当调节,以便于控制正文合适的换页位置 + \item 正文字体:正文采用五号宋体,行间距为18磅;图、表标题采用小五号黑体;表格中文字、图例说明采用小五号宋体;表注采用六号宋体 + \item 页眉、页脚文字均采用小五号宋体,页眉左侧为“宁夏大学博(硕)士学位论文”,右侧为一级标题名称;页眉下横线为上粗下细文武线(3磅);单面复印时页码排在页脚居中位置,双面复印时页码分别按左右侧排列,页码一律以“--1--”格式排在相应的位置 + \item 文中表格均采用标准表格形式(如三线表,可参照正式出版物中的表格形式) + \item 文中所列图形应有所选择,照片不得直接粘贴,须经扫描后以图片形式插入 + \item 文中英文、罗马字符一般采用Time New Roman正体,按规定应采用斜体的采用斜体 + \item 博士学位论文8万字,硕士学位论文3万字,专业学位论文3万字左右。 +\end{enumerate} + +\section{学位论文的各组成部分与排列顺序} + +学位论文,一般由封面、独创性声明及版权授权书、中文摘要、英文摘要、目录、插图和附表清单、主要符号表、引言(第一章)、正文、注释、结论(最后一章)、参考文献、附录、致谢和作者简历及论文发表情况等部分组成并按前后顺序排列。 + +1.封面:不同类型研究生,学位论文封面、书脊要求如下: + +\begin{enumerate}[label =(\arabic*)] + \item 学位论文题目应能概括论文的主要内容,切题、简洁,不超过26字,可分两行排列,中英文对照; + \item 未经学位评定分委员会遴选且在研究生院备案的合作指导教师,不得在学位论文上署名;署名的合作指导教师人数不超过2人; + \item 学科门类:哲学、经济学、法学、教育学、文学、历史学、理学、工学、农学、管理学;学位级别:硕士、博士;专业学位:教育硕士、工商管理硕士(MBA)、农业推广硕士、工程硕士。 + \item 专业名称、专业领域名称、研究方向应严格按照专业目录和培养方案填写; + \item 分类号:按《中国图书资料分类法》要求填写,可自行上网查询; + \item 密级:涉密论文,由院学位评定分委员会根据国家规定的密级范围和法定程序审查确定密级,并注明相应保密年限;不需保密的应填写“公开”。 + \item 日期:学位论文完成时间。 +\end{enumerate} + +学历硕士封面颜色为草绿色;博士学位论文封面颜色为湖水蓝色;专业学位硕士学位论文的封面均为浅黄色;以同等学力在职申请硕士学位论文和高校教师在职攻读硕士学位论文封面颜色为浅蓝色。 + +2.独创性声明和关于论文使用授权的说明(见附件二)附于学位论文摘要之前,需研究生和指导教师本人签字。 + +3.中文摘要(见附件三):硕士论文摘要的字数一般为500个左右,博士论文摘要的字数为800-1000个。内容包括研究工作目的、研究方法、所取得的结果和结论,应突出本论文的创造性成果或新见解,语言精炼。摘要应当具有独立性,即不阅读论文的全文,就能获得论文所能提供的主要信息。 + +为便于文献检索,应在论文摘要后另起一行注明本文的关键词3~5个,中间以“,”分隔。 + +4.英文摘要(见附件三):与中文摘要对应。 + +5.目录(见附件四-一与四-二):应是论文的提纲,也是论文组成部分的小标题。目录一般列至二级标题。 + +6.插图和附表清单:论文中如果图、表较多,可以分别列出清单列于目录页之后。图表的清单应有序号、图表名称和页码。 + +7.符号、标志、缩略词、计量单位、名词、术语等注释说明,可以集中列于图表的清单之后。 + +8.引言(第一章):在论文正文前。内容包括:该研究工作的实用价值和理论意义;国内外已有的文献综述;本研究要解决的问题。 + +9.正文:是学位论文的主体。写作内容可因研究课题的性质而不同,一般包括:理论分析、计算方法、实验装置和测试方法、对实验结果或调研结果的分析与讨论,本研究方法与已有研究方法的比较等方面。内容应简炼、重点突出,不要叙述专业方面的常识性内容。各章节之间应密切联系,形成一个整体。 + +10.注释:一律采用脚注方式,如“①”等,按照本学科国内外通行的范式,逐一注明本文引用或参考、借用的资料数据出处及他人的研究成果和观点,严禁掠人之美和抄袭剽窃。 + +11.结论(最后一章):结论应明确、简炼、完整、准确,要认真阐述自己的研究工作在本领域中的地位、作用以及自己新见解的意义。应当严格区分研究生的成果与导师的科研成果的界限。 + +如果不可能得出明确结论,也可以没有结论而进行必要的讨论。 + +12.参考文献:引用他人的成果必须标明出处。所有引用过的文献,应按引用的顺序编号排列。参考文献一律放在结论之后,不得放在各章之后。 + +13.附录:凡不宜放在论文正文中,但又与论文有关的研究过程或资料,如较为冗长的公式推导、重复性或者辅助性数据图表、计算程序及有关说明等,均应放入附录。 + +14.致谢:致谢对象限于对课题研究、学位论文完成等方面有较重要帮助的人员,落款处签名并注明日期(大写日期)。 + +15.个人简历及论文发表情况 + +个人简历包括个人姓名、性别、民族、出生年、籍贯,本科阶段入学时间、所在学校、所学专业,进入宁夏大学攻读学位时间、攻读专业。论文发表情况只登记已经正式发表者,格式同参考文献中论文格式。 + +\section{书写要求} + +1.语言表述 + +论文应层次分明、数据可靠、文字简炼、说明透彻、推理严谨、立论正确,避免使用文学性质的带感情色彩的非学术性词语。论文中如出现非通用性的新名词、新术语、新概念,应作相应解释。 + +2.层次和标题 + +层次应清楚,标题应简明扼要,重点突出。 + +理工农类具体格式如下: + +第一章 □□□□□(一级标题,居中,单列一行) + +1.1 □□□□□(二级标题,左对齐,单列一行) + +1.1.1 □□□□□(三级标题,左对齐,单列一行) +\newline +文史类具体格式如下: + +第一章 □□□□□□□(一级标题,居中,单列一行) + +第一节 □□□□□(二级标题,居中,单列一行) + +一、□□□□(三级标题,首行缩进2字符,单列一行) + +若有四五六级标题,可按如下格式编排: + +(一)□□□□□(四级标题,首行缩进2字符) + +1、□□□□□(五级标题,首行缩进2字符) + +(1)□□□□□(六级标题,首行缩进2字符) + +其它标题或需突出的重点,可用五号黑体(或加粗),可单列一行,也可放在段首。 + +3.篇眉和页码 + +从第一章开始书写篇眉,篇眉下为上粗下细文武线。页码从第一章开始按阿拉伯数字连续编排。第一章之前的页码用罗马数字单独编排。 + +4.图、表、公式等 + +图形要精选,要具有自明性,切忌与表及文字表述重复。图形坐标比例不宜过大,同一图形中不同曲线的图标应采用不同的形状和不同颜色的连线。图中术语、符号、单位等应与正文中表述一致。图序、标题、图例说明居中置于图的下方。 + +表中参数应标明量和单位。表序、标题居中置于表的上方。表注置于表的下方。\cite{zhangkun1994} + +图、表应与说明文字相配合,图形不能跨页显示,表格一般放在同一页内显示。 + +公式一般居中对齐,公式编号用小括号括起,右对齐,其间不加线条。 + +文中的图、表、公式、附注等一律用阿拉伯数字按章节(或连续)编号,如图1-1,表2-2,公式(3-10)等。 + +5.参考文献 + +参考文献可顺序编码,也可按“著者-出版年”编码,也可以根据《中国高校自然科学学报编排规范》的要求书写参考文献,并按顺序编码,即按文中引用的顺序编码。作者姓名写至第三位,余者写“,等”或“,et al.”。 + +几种主要参考文献著录表的格式: + +连续出版物:序号 作者. 文题. 刊名,年,卷号(期号):起~止页码 +专(译)著:序号 作者. 书名(,译者). 出版地:出版者,出版年,起~止页码 +论 文 集:序号 作者. 文题. 见(in):编者,编(eds). 文集名. 出版地:出版者,出版年,起~止页码 +学 位 论 文:序号 作者. 文题:[XX学位论文]. 授予单位所在地:授予单位,授予年 +专 利:序号 申请者. 专利名. 国名,专利文献种类,专利号,出版日期 +技 术 标 准:序号 发布单位. 技术标准代号. 技术标准名称. 出版地:出版者,出版日期 + +举例如下: + +[1] 朱文学. 粮食干燥原理及品质分析. 北京:高等教育出版社,2001,57-108 +[2] Dupont B. Bone marrow transplantation in severe combined immunodeficiency with an unrelated MLC compatible donor. In:White H J.,Smith R,eds. Proceedings of the Third Annual Meeting of the International Society for Experimental Hematology. Houston:International Society for Experimental Hematology, 1974. 44-46 +[3] 欧阳忠. 中国股市及农业板块的弱市场有效性假设的分析和应用:[硕士学位论文]. 北京:中国农业大学,2002 +[4] 姜锡洲. 一种温热外敷药制备方法. 中国专利,881056073,1980-07-26 +[5] 中华人民共和国国家技术监督局. GB3100~3102. 中华人民共和国国家标准—量与单位. 北京:中国标准出版社,1994-11-01 + +引用古籍分三种情况: + +1、古籍整理本:时代·著者(或编者).书名.整理者.出版地:出版者,出版年. +如:[5]宋·苏辙. 苏辙集. 陈宏天、高秀芳点校. 北京:中华书局,1990. +2、丛书影印本:时代·著者(或编者).书名.丛书名.出版地:出版者,出版年. +如:[6]宋·陆游. 渭南文集.文渊阁《四库全书》本.台北:商务印书馆,1986. +3、古籍原本:严格按照古籍收藏单位著录之内容进行标注,基本格式为:时代·著者(或编者).书名.版本(括注公元年).藏书地点. +如:[7]元·虞集. 道园类稿. 元代至正十四年(1352)金伯祥刻本. 国家图书馆. + +6.量和单位 +应严格执行GB3100~3102:93有关量和单位的规定(参阅《常用量和单位》.计量出版社,1996)。单位名称的书写,可采用国际通用符号,也可用中文名称,但全文应统一,不要两种混用。 + +\section{电子文档要求} + +1.电子版学位论文应与印刷本内容一致。因特殊情况出现不一致时,必须给予说明。 + +2.电子版学位论文应集合为一个word电子文档。采用其它编辑器编辑的论文,请提交pdf格式文件。
\ No newline at end of file diff --git a/macros/unicodetex/latex/nxuthesis/chapter/chap02.tex b/macros/unicodetex/latex/nxuthesis/chapter/chap02.tex new file mode 100644 index 0000000000..9a1c02ade2 --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/chapter/chap02.tex @@ -0,0 +1,142 @@ +\chapter{图表示例} + +\section{插图} + +图片通常在 \env{figure} 环境中使用 \cs{includegraphics} 插入,如图~\ref{fig:example} 的源代码。 +建议矢量图片使用 PDF 格式,比如数据可视化的绘图; +照片应使用 JPG 格式; +其他的栅格图应使用无损的 PNG 格式。 +注意,LaTeX 不支持 TIFF 格式;EPS 格式已经过时。 + +\begin{figure} + \centering + \includegraphics[width=0.5\linewidth]{example-image-a.pdf} + \caption*{国外的期刊习惯将图表的标题和说明文字写成一段,需要改写为标题只含图表的名称,其他说明文字以注释方式写在图表下方,或者写在正文中。} + \caption{示例图片标题} + \label{fig:example} +\end{figure} + +若图或表中有附注,采用英文小写字母顺序编号,附注写在图或表的下方。 +国外的期刊习惯将图表的标题和说明文字写成一段,需要改写为标题只含图表的名称,其他说明文字以注释方式写在图表下方,或者写在正文中。 + +如果一个图由两个或两个以上分图组成时,各分图分别以 (a)、(b)、(c)...... 作为图序,并须有分图题。 +推荐使用 \pkg{subcaption} 宏包来处理, 比如图~\ref{fig:subfig-a} 和图~\ref{fig:subfig-b}。 + +\begin{figure} + \centering + \subcaptionbox{分图 A\label{fig:subfig-a}} + {\includegraphics[width=0.35\linewidth]{example-image-a.pdf}} + \subcaptionbox{分图 B\label{fig:subfig-b}} + {\includegraphics[width=0.35\linewidth]{example-image-b.pdf}} + \caption{多个分图的示例} + \label{fig:multi-image} +\end{figure} + + + +\section{表格} + +表应具有自明性。为使表格简洁易读,尽可能采用三线表,如表~\ref{tab:three-line}。 +三条线可以使用 \pkg{booktabs} 宏包提供的命令生成。 + +\begin{table} + \centering + \caption{三线表示例} + \begin{tabular}{ll} + \toprule + 文件名 & 描述 \\ + \midrule + nxuthesis.dtx & 模板的源文件,包括文档和注释 \\ + nxuthesis.cls & 模板文件 \\ + nxuthesis-*.bst & BibTeX 参考文献表样式文件 \\ + \bottomrule + \end{tabular} + \label{tab:three-line} +\end{table} + +表格如果有附注,尤其是需要在表格中进行标注时,可以使用 \pkg{threeparttable} 宏包。 +研究生要求使用英文小写字母 a、b、c……顺序编号,本科生使用圈码 ①、②、③……编号。 + +\begin{table} + \centering + \begin{threeparttable}[c] + \caption{带附注的表格示例} + \label{tab:three-part-table} + \begin{tabular}{ll} + \toprule + 文件名 & 描述 \\ + \midrule + nxuthesis.dtx\tnote{a} & 模板的源文件,包括文档和注释 \\ + nxuthesis.cls\tnote{b} & 模板文件 \\ + nxuthesis-*.bst & BibTeX 参考文献表样式文件 \\ + \bottomrule + \end{tabular} + \begin{tablenotes} + \item [a] 可以通过 xelatex 编译生成模板的使用说明文档; + 使用 xetex 编译 \file{nxuthesis.ins} 时则会从 \file{.dtx} 中去除掉文档和注释,得到精简的 \file{.cls} 文件。 + \item [b] 更新模板时,一定要记得编译生成 \file{.cls} 文件,否则编译论文时载入的依然是旧版的模板。 + \end{tablenotes} + \end{threeparttable} +\end{table} + +如某个表需要转页接排,可以使用 \pkg{longtable} 宏包,需要在随后的各页上重复表的编号。 +编号后跟表题(可省略)和“(续)”,置于表上方。续表均应重复表头。 + +\begin{longtable}{cccc} + \caption{跨页长表格的表题} + \label{tab:longtable} \\ + \toprule + 表头 1 & 表头 2 & 表头 3 & 表头 4 \\ + \midrule + \endfirsthead + \caption*{续表~\thetable\quad 跨页长表格的表题} \\ + \toprule + 表头 1 & 表头 2 & 表头 3 & 表头 4 \\ + \midrule + \endhead + \bottomrule + \endfoot + Row 1 & & & \\ + Row 2 & & & \\ + Row 3 & & & \\ + Row 4 & & & \\ + Row 5 & & & \\ + Row 6 & & & \\ + Row 7 & & & \\ + Row 8 & & & \\ + Row 9 & & & \\ + Row 10 & & & \\ +\end{longtable} + + + +\section{算法} + +算法环境可以使用 \pkg{algorithms} 或者 \pkg{algorithm2e} 宏包。 + +\renewcommand{\algorithmicrequire}{\textbf{输入:}\unskip} +\renewcommand{\algorithmicensure}{\textbf{输出:}\unskip} + +\begin{algorithm} + \caption{Calculate $y = x^n$} + \label{alg1} + \small + \begin{algorithmic} + \REQUIRE $n \geq 0$ + \ENSURE $y = x^n$ + + \STATE $y \leftarrow 1$ + \STATE $X \leftarrow x$ + \STATE $N \leftarrow n$ + + \WHILE{$N \neq 0$} + \IF{$N$ is even} + \STATE $X \leftarrow X \times X$ + \STATE $N \leftarrow N / 2$ + \ELSE[$N$ is odd] + \STATE $y \leftarrow y \times X$ + \STATE $N \leftarrow N - 1$ + \ENDIF + \ENDWHILE + \end{algorithmic} +\end{algorithm} diff --git a/macros/unicodetex/latex/nxuthesis/chapter/references.tex b/macros/unicodetex/latex/nxuthesis/chapter/references.tex new file mode 100644 index 0000000000..5042c6f8b1 --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/chapter/references.tex @@ -0,0 +1 @@ +\bibliography{ref/refs}
\ No newline at end of file diff --git a/macros/unicodetex/latex/nxuthesis/chapter/resume.tex b/macros/unicodetex/latex/nxuthesis/chapter/resume.tex new file mode 100644 index 0000000000..3fe311dc37 --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/chapter/resume.tex @@ -0,0 +1,18 @@ + +\begin{resume} + +\subsection*{个人简介} + +×××,男,汉族,200×年×月出生于安徽××县。 +2018 年 9 月考入××大学水利系××专业,2022 年 7 月本科毕业并获得工学学士学位。 +2022 年 9 月考入宁夏大学土木与水利工程学院攻读××硕士学位至今,主要从事水力学及河流动力学研究。 + +\subsection*{攻读硕士学位期间论文发表情况} + +\begin{achievements} + \item 第一篇 + \item 第二篇 + \item 第三篇 +\end{achievements} + +\end{resume} diff --git a/macros/unicodetex/latex/nxuthesis/nxu-name.pdf b/macros/unicodetex/latex/nxuthesis/nxu-name.pdf Binary files differnew file mode 100644 index 0000000000..dd863cc746 --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/nxu-name.pdf diff --git a/macros/unicodetex/latex/nxuthesis/nxusetup.tex b/macros/unicodetex/latex/nxuthesis/nxusetup.tex new file mode 100644 index 0000000000..540d5c631e --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/nxusetup.tex @@ -0,0 +1,202 @@ + +% 论文基本信息配置 + +\nxusetup{ + %****************************** + % 注意: + % 1. 配置里面不要出现空行 + % 2. 不需要的配置信息可以删除 + % 3. 建议先阅读文档中所有关于选项的说明 + %****************************** + % + % 输出格式 + % 选择打印版(print)或用于提交的电子版(electronic),前者会插入空白页以便直接双面打印 + % + output = print, + % 格式类型 + % 默认为论文(thesis),也可以设置为开题报告(proposal) + % thesis-type = proposal, + % + % 标题 + % 可使用“\\”命令手动控制换行 + % + title = {宁夏大学研究生学位论文 \LaTeX{} 模板\\使用示例文档 v\version}, + title* = {An Introduction to \LaTeX{} Thesis Template of Ningxia + University v\version}, + % + % 学科门类 + % 1. 学术型 + % - 中文 + % 需注明所属的学科门类,例如: + % 哲学、经济学、法学、教育学、文学、历史学、理学、工学、农学、医学、 + % 军事学、管理学、艺术学 + % - 英文 + % 博士:Doctor of Philosophy + % 硕士: + % 哲学、文学、历史学、法学、教育学、艺术学门类,公共管理学科 + % 填写“Master of Arts“,其它填写“Master of Science” + % 2. 专业型 + % 直接填写专业学位的名称,例如: + % 教育博士、工程硕士等 + % Doctor of Education, Master of Engineering + % 3. 本科生不需要填写 + % + degree-category = {工学硕士}, + % + % 培养单位 + % 填写所属院系的全名 + % + department = {土木与水利工程学院}, + % + % 学科 + % 1. 研究生学术型学位,获得一级学科授权的学科填写一级学科名称,其他填写二级学科名称 + % 2. 本科生填写专业名称,第二学位论文需标注“(第二学位)” + % + discipline = {水利工程}, + % + % 专业领域 + % 1. 设置专业领域的专业学位类别,填写相应专业领域名称 + % 2. 2019 级及之前工程硕士学位论文,在 `engineering-field` 填写相应工程领域名称 + % 3. 其他专业学位类别的学位论文无需此信息 + % + % professional-field = {计算机技术}, + % professional-field* = {Computer Technology}, + % + % 姓名 + % + author = {某某某}, + % + % 学号 + % 仅当书写开题报告时需要(同时设置 `thesis-type = proposal') + % + student-id = {12022000000}, + % + % 指导教师 + % 中文姓名和职称之间以英文逗号“,”分开,下同 + % + supervisor = {某某某, 教授}, + % + % 联合指导教师 + % + co-supervisor = {某某某, 教授}, + % + % 研究方向 + % + field = {水力学及河流动力学}, + % + % 日期 + % 使用 ISO 格式;默认为当前时间 + % + date = {2024-05-20}, + % + % 是否在中文封面后的空白页生成书脊(默认 false) + % + include-spine = false, + % + % 分类号 + % + clc = {TV143}, + % + % 密级和年限 + % 秘密, 机密, 绝密 + % + secret-level = {公开}, + secret-year = {}, + % + % 单位代码 + % + code = {10749} + % + % 博士后专有部分 + % + % clc = {分类号}, + % udc = {UDC}, + % id = {编号}, + % discipline-level-1 = {计算机科学与技术}, % 流动站(一级学科)名称 + % discipline-level-2 = {系统结构}, % 专业(二级学科)名称 + % start-date = {2011-07-01}, % 研究工作起始时间 +} + +% 载入所需的宏包 + +% 定理类环境宏包 +\usepackage{amsthm} +% 也可以使用 ntheorem +% \usepackage[amsmath,thmmarks,hyperref]{ntheorem} + +\nxusetup{ + % + % 数学字体 + % math-style = GB, % GB | ISO | TeX + math-font = xits, % stix | xits | libertinus +} + +% 可以使用 nomencl 生成符号和缩略语说明 +% \usepackage{nomencl} +% \makenomenclature + +% 表格调整行高 +% \usepackage{array} + +% 表格加脚注 +\usepackage{threeparttable} + +% 表格中支持跨行 +\usepackage{multirow} + +% 固定宽度的表格。 +% \usepackage{tabularx} + +% 跨页表格 +\usepackage{longtable} + +% 算法 +\usepackage{algorithm} +\usepackage{algorithmic} + +% 量和单位 +\usepackage{siunitx} + +% 参考文献使用 BibTeX + natbib 宏包 +% 顺序编码制 +\usepackage[sort]{natbib} +\bibliographystyle{nxuthesis-numeric} + +% 著者-出版年制 +% \usepackage{natbib} +% \bibliographystyle{nxuthesis-author-year} + +% 生命科学学院要求使用 Cell 参考文献格式(2023 年以前使用 author-date 格式) +% \usepackage{natbib} +% \bibliographystyle{cell} + +% 本科生参考文献的著录格式 +% \usepackage[sort]{natbib} +% \bibliographystyle{nxuthesis-bachelor} + +% 参考文献使用 BibLaTeX 宏包 +% \usepackage[style=nxuthesis-numeric]{biblatex} +% \usepackage[style=nxuthesis-author-year]{biblatex} +%\usepackage[style=gb7714-2015]{biblatex} +% \usepackage[style=apa]{biblatex} +% \usepackage[style=mla-new]{biblatex} +% 声明 BibLaTeX 的数据库 +% \addbibresource{ref/refs.bib} + +% 定义所有的图片文件在 figures 子目录下 +\graphicspath{{figures/}} + +% 数学命令 +\makeatletter +\newcommand\dif{% % 微分符号 + \mathop{}\!% + \ifnxu@math@style@TeX + d% + \else + \mathrm{d}% + \fi +} +\makeatother + +% hyperref 宏包在最后调用 +\usepackage{hyperref} diff --git a/macros/unicodetex/latex/nxuthesis/nxuthesis-author-year.bst b/macros/unicodetex/latex/nxuthesis/nxuthesis-author-year.bst new file mode 100644 index 0000000000..9a46a4e461 --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/nxuthesis-author-year.bst @@ -0,0 +1,2663 @@ +%% +%% This is file `variants/thu/thuthesis-author-year.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gbt7714.dtx (with options: `2015,thu,author-year') +%% ------------------------------------------------------------------- +%% GB/T 7714 BibTeX Style +%% https://github.com/zepinglee/gbt7714-bibtex-style +%% Version: 2024/03/08 v2.1.6 +%% ------------------------------------------------------------------- +%% Copyright (C) 2016--2024 by Zeping Lee <zepinglee AT gmail.com> +%% ------------------------------------------------------------------- +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% ------------------------------------------------------------------- +INTEGERS { + citation.et.al.min + citation.et.al.use.first + bibliography.et.al.min + bibliography.et.al.use.first + uppercase.name + terms.in.macro + year.after.author + period.after.author + italic.book.title + sentence.case.title + link.title + title.in.journal + show.patent.country + show.mark + space.before.mark + show.medium.type + short.journal + italic.journal + link.journal + bold.journal.volume + show.missing.address.publisher + space.before.pages + only.start.page + wave.dash.in.pages + show.urldate + show.url + show.doi + show.preprint + show.note + show.english.translation + end.with.period + lang.zh.order + lang.ja.order + lang.en.order + lang.ru.order + lang.other.order +} + +STRINGS { + component.part.label +} + +FUNCTION {load.config} +{ + #2 'citation.et.al.min := + #1 'citation.et.al.use.first := + #4 'bibliography.et.al.min := + #3 'bibliography.et.al.use.first := + #0 'uppercase.name := + #0 'terms.in.macro := + #1 'year.after.author := + #0 'period.after.author := + #0 'italic.book.title := + #1 'sentence.case.title := + #0 'link.title := + #1 'title.in.journal := + #1 'show.patent.country := + #1 'show.mark := + #0 'space.before.mark := + #1 'show.medium.type := + "slash" 'component.part.label := + #0 'short.journal := + #0 'italic.journal := + #0 'link.journal := + #0 'bold.journal.volume := + #0 'show.missing.address.publisher := + #1 'space.before.pages := + #0 'only.start.page := + #0 'wave.dash.in.pages := + #1 'show.urldate := + #1 'show.url := + #1 'show.doi := + #1 'show.preprint := + #0 'show.note := + #0 'show.english.translation := + #1 'end.with.period := + #1 'lang.zh.order := + #2 'lang.ja.order := + #3 'lang.en.order := + #4 'lang.ru.order := + #5 'lang.other.order := +} + +ENTRY + { address + archivePrefix + author + booktitle + date + doi + edition + editor + eprint + eprinttype + entrysubtype + howpublished + institution + journal + journaltitle + key + langid + language + location + mark + medium + note + number + organization + pages + publisher + school + series + shortjournal + title + translation + translator + url + urldate + volume + year + } + { entry.lang entry.is.electronic is.pure.electronic entry.numbered } + { label extra.label sort.label short.label short.list entry.mark entry.url } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } + +INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } + +INTEGERS { charptr len } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.slash := + #3 'lang.zh := + #4 'lang.ja := + #1 'lang.en := + #2 'lang.ru := + #0 'lang.other := +} + +FUNCTION {bbl.anonymous} +{ entry.lang lang.zh = + { "佚名" } + { "Anon" } + if$ +} + +FUNCTION {bbl.space} +{ entry.lang lang.zh = + { "\ " } + { " " } + if$ +} + +FUNCTION {bbl.and} +{ "" } + +FUNCTION {bbl.et.al} +{ entry.lang lang.zh = + { "等" } + { entry.lang lang.ja = + { "他" } + { entry.lang lang.ru = + { "идр" } + { "et~al." } + if$ + } + if$ + } + if$ +} + +FUNCTION {citation.and} +{ terms.in.macro + { "{\biband}" } + 'bbl.and + if$ +} + +FUNCTION {citation.et.al} +{ terms.in.macro + { "{\bibetal}" } + 'bbl.et.al + if$ +} + +FUNCTION {bbl.colon} { ": " } + +FUNCTION {bbl.pages.colon} +{ space.before.pages + { ": " } + { ":\allowbreak " } + if$ +} + +FUNCTION {bbl.wide.space} { "\quad " } + +FUNCTION {bbl.slash} { "//\allowbreak " } + +FUNCTION {bbl.sine.loco} +{ entry.lang lang.zh = + { "[出版地不详]" } + { "[S.l.]" } + if$ +} + +FUNCTION {bbl.sine.nomine} +{ entry.lang lang.zh = + { "[出版者不详]" } + { "[s.n.]" } + if$ +} + +FUNCTION {bbl.sine.loco.sine.nomine} +{ entry.lang lang.zh = + { "[出版地不详: 出版者不详]" } + { "[S.l.: s.n.]" } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +STRINGS { x y } + +FUNCTION {contains} +{ 'y := + 'x := + y text.length$ 'len := + x text.length$ len - #1 + 'charptr := + { charptr #0 > + x charptr len substring$ y = not + and + } + { charptr #1 - 'charptr := } + while$ + charptr #0 > +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { bbl.slash * write$ + newline$ + } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.after} +{ 't := + duplicate$ empty$ + 'pop$ + { 's := + output.state mid.sentence = + { t * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { bbl.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s + } + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry} +{ end.with.period + 'add.period$ + 'skip$ + if$ + write$ + show.english.translation entry.lang lang.zh = and + { ")" + write$ + } + 'skip$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.block 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ + } + if$ +} + +FUNCTION {new.slash} +{ output.state before.all = + 'skip$ + { component.part.label "slash" = + { after.slash 'output.state := } + { new.block + component.part.label "in" = + { entry.lang lang.en = + { "In: " output + write$ + "" + before.all 'output.state := + } + 'skip$ + if$ + } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {format.btitle} +{ italic.book.title + entry.lang lang.en = and + 'emphasize + 'skip$ + if$ +} + +INTEGERS { byte second.byte } + +INTEGERS { char.lang tmp.lang } + +STRINGS { tmp.str } + +FUNCTION {get.str.lang} +{ 'tmp.str := + lang.other 'tmp.lang := + #1 'charptr := + tmp.str text.length$ #1 + 'len := + { charptr len < } + { tmp.str charptr #1 substring$ chr.to.int$ 'byte := + byte #128 < + { charptr #1 + 'charptr := + byte #64 > byte #91 < and byte #96 > byte #123 < and or + { lang.en 'char.lang := } + { lang.other 'char.lang := } + if$ + } + { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := + byte #224 < + { charptr #2 + 'charptr := + byte #207 > byte #212 < and + byte #212 = second.byte #176 < and or + { lang.ru 'char.lang := } + { lang.other 'char.lang := } + if$ + } + { byte #240 < + { charptr #3 + 'charptr := + byte #227 > byte #234 < and + { lang.zh 'char.lang := } + { byte #227 = + { second.byte #143 > + { lang.zh 'char.lang := } + { second.byte #128 > second.byte #132 < and + { lang.ja 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + { byte #239 = + second.byte #163 > second.byte #172 < and and + { lang.zh 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + if$ + } + { charptr #4 + 'charptr := + byte #240 = second.byte #159 > and + { lang.zh 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + if$ + } + if$ + char.lang tmp.lang > + { char.lang 'tmp.lang := } + 'skip$ + if$ + } + while$ + tmp.lang +} + +FUNCTION {check.entry.lang} +{ author field.or.null + title field.or.null * + get.str.lang +} + +STRINGS { entry.langid } + +FUNCTION {set.entry.lang} +{ "" 'entry.langid := + language empty$ not + { language 'entry.langid := } + 'skip$ + if$ + langid empty$ not + { langid 'entry.langid := } + 'skip$ + if$ + entry.langid empty$ + { check.entry.lang } + { entry.langid "english" = entry.langid "american" = or entry.langid "british" = or + { lang.en } + { entry.langid "chinese" = + { lang.zh } + { entry.langid "japanese" = + { lang.ja } + { entry.langid "russian" = + { lang.ru } + { check.entry.lang } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + 'entry.lang := +} + +FUNCTION {set.entry.numbered} +{ type$ "patent" = + type$ "standard" = or + type$ "techreport" = or + { #1 'entry.numbered := } + { #0 'entry.numbered := } + if$ +} + +INTEGERS { nameptr namesleft numnames name.lang } + +FUNCTION {format.name} +{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t "others" = + { bbl.et.al } + { t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}{ f{~}}" format.name$ + uppercase.name + { "u" change.case$ } + 'skip$ + if$ + t #1 "{, jj}" format.name$ * + } + { t #1 "{ll}{ff}" format.name$ } + if$ + } + if$ +} + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + "" + numnames 'namesleft := + { namesleft #0 > } + { s nameptr format.name bbl.et.al = + numnames bibliography.et.al.min #1 - > nameptr bibliography.et.al.use.first > and or + { ", " * + bbl.et.al * + #1 'namesleft := + } + { nameptr #1 > + { namesleft #1 = bbl.and "" = not and + { bbl.and * } + { ", " * } + if$ + } + 'skip$ + if$ + s nameptr format.name * + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ not + { author format.names } + { "empty author in " cite$ * warning$ + bbl.anonymous + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names } + if$ +} + +FUNCTION {format.translators} +{ translator empty$ + { "" } + { translator format.names + entry.lang lang.zh = + { translator num.names$ #3 > + { "译" * } + { ", 译" * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = booktitle empty$ not and + or + 'author.editor.full + { type$ "collection" = + type$ "proceedings" = + or + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label ")" * + make.full.names duplicate$ short.list = + { pop$ } + { duplicate$ "]" contains + { "{" swap$ * "}" * } + 'skip$ + if$ + * + } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {change.sentence.case} +{ entry.lang lang.en = + { "t" change.case$ } + 'skip$ + if$ +} + +FUNCTION {add.link} +{ url empty$ not + { "\href{" url * "}{" * swap$ * "}" * } + { doi empty$ not + { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered number empty$ not and + { bbl.colon * + type$ "patent" = show.patent.country and + { address empty$ not + { address * ", " * } + { location empty$ not + { location * ", " * } + { entry.lang lang.zh = + { "中国" * ", " * } + 'skip$ + if$ + } + if$ + } + if$ + } + 'skip$ + if$ + number * + } + 'skip$ + if$ + link.title + 'add.link + 'skip$ + if$ + } + if$ +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {is.digit} +{ duplicate$ empty$ + { pop$ #0 } + { chr.to.int$ + duplicate$ "0" chr.to.int$ < + { pop$ #0 } + { "9" chr.to.int$ > + { #0 } + { #1 } + if$ + } + if$ + } + if$ +} + +FUNCTION {is.number} +{ 's := + s empty$ + { #0 } + { s text.length$ 'charptr := + { charptr #0 > + s charptr #1 substring$ is.digit + and + } + { charptr #1 - 'charptr := } + while$ + charptr not + } + if$ +} + +FUNCTION {format.volume} +{ volume empty$ not + { volume is.number + { entry.lang lang.zh = + { "第 " volume * " 卷" * } + { "Vol." volume tie.or.space.connect } + if$ + } + { volume } + if$ + } + { "" } + if$ +} + +FUNCTION {format.number} +{ number empty$ not + { number is.number + { entry.lang lang.zh = + { "第 " number * " 册" * } + { "No." number tie.or.space.connect } + if$ + } + { number } + if$ + } + { "" } + if$ +} + +FUNCTION {format.volume.number} +{ volume empty$ not + { format.volume } + { format.number } + if$ +} + +FUNCTION {format.title.vol.num} +{ title + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered + { number empty$ not + { bbl.colon * number * } + 'skip$ + if$ + } + { format.volume.number 's := + s empty$ not + { bbl.colon * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.series.vol.num.title} +{ format.volume.number 's := + series empty$ not + { series + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered + { bbl.wide.space * } + { bbl.colon * + s empty$ not + { s * bbl.wide.space * } + 'skip$ + if$ + } + if$ + title * + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered number empty$ not and + { bbl.colon * number * } + 'skip$ + if$ + } + { format.title.vol.num } + if$ + format.btitle + link.title + 'add.link + 'skip$ + if$ +} + +FUNCTION {format.booktitle.vol.num} +{ booktitle + entry.numbered + 'skip$ + { format.volume.number 's := + s empty$ not + { bbl.colon * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.series.vol.num.booktitle} +{ format.volume.number 's := + series empty$ not + { series bbl.colon * + entry.numbered not s empty$ not and + { s * bbl.wide.space * } + 'skip$ + if$ + booktitle * + } + { format.booktitle.vol.num } + if$ + format.btitle +} + +FUNCTION {remove.period} +{ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ 'tmp.str := + tmp.str "." = not + { s tmp.str * 's := } + 'skip$ + if$ + t #2 global.max$ substring$ 't := + } + while$ + s +} + +FUNCTION {abbreviate} +{ remove.period + 't := + t "l" change.case$ 's := + "" + s "physical review letters" = + { "Phys Rev Lett" } + 'skip$ + if$ + 's := + s empty$ + { t } + { pop$ s } + if$ +} + +FUNCTION {get.journal.title} +{ short.journal + { shortjournal empty$ not + { shortjournal } + { journal empty$ not + { journal abbreviate } + { journaltitle empty$ not + { journaltitle abbreviate } + { "" } + if$ + } + if$ + } + if$ + } + { journal empty$ not + { journal } + { journaltitle empty$ not + { journaltitle } + { shortjournal empty$ not + { shortjournal } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {check.arxiv.preprint} +{ #1 #5 substring$ purify$ "l" change.case$ "arxiv" = + { #1 } + { #0 } + if$ +} + +FUNCTION {format.journal} +{ get.journal.title + duplicate$ empty$ not + { italic.journal entry.lang lang.en = and + 'emphasize + 'skip$ + if$ + link.journal + 'add.link + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {set.entry.mark} +{ entry.mark empty$ not + 'pop$ + { mark empty$ not + { pop$ mark 'entry.mark := } + { 'entry.mark := } + if$ + } + if$ +} + +FUNCTION {format.mark} +{ show.mark + { entry.mark + show.medium.type + { medium empty$ not + { "/" * medium * } + { entry.is.electronic + { "/OL" * } + 'skip$ + if$ + } + if$ + } + 'skip$ + if$ + 'entry.mark := + space.before.mark + { " " } + { "\allowbreak" } + if$ + "[" * entry.mark * "]" * + } + { "" } + if$ +} + +FUNCTION {num.to.ordinal} +{ duplicate$ text.length$ 'charptr := + duplicate$ charptr #1 substring$ 's := + s "1" = + { "st" * } + { s "2" = + { "nd" * } + { s "3" = + { "rd" * } + { "th" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { edition is.number + { edition "1" = not + { entry.lang lang.zh = + { edition " 版" * } + { edition num.to.ordinal " ed." * } + if$ + } + 'skip$ + if$ + } + { entry.lang lang.en = + { edition change.sentence.case 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." * } + if$ + } + { edition } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.publisher} +{ publisher empty$ not + { publisher } + { school empty$ not + { school } + { organization empty$ not + { organization } + { institution empty$ not + { institution } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.address.publisher} +{ address empty$ not + { address } + { location empty$ not + { location } + { "" } + if$ + } + if$ + duplicate$ empty$ not + { format.publisher empty$ not + { bbl.colon * format.publisher * } + { entry.is.electronic not show.missing.address.publisher and + { bbl.colon * bbl.sine.nomine * } + 'skip$ + if$ + } + if$ + } + { pop$ + entry.is.electronic not show.missing.address.publisher and + { format.publisher empty$ not + { bbl.sine.loco bbl.colon * format.publisher * } + { bbl.sine.loco.sine.nomine } + if$ + } + { format.publisher empty$ not + { format.publisher } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {extract.before.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr len < + s charptr #1 substring$ "-" = + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {extract.before.slash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "/" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.slash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + s charptr #1 substring$ "/" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr len < + s charptr #1 substring$ "-" = + s charptr #1 substring$ "/" = + or + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {format.year} +{ year empty$ not + { year extract.before.slash extra.label * } + { date empty$ not + { date extract.before.dash extra.label * } + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ + urldate empty$ not + { "[" urldate extract.before.dash * extra.label * "]" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.periodical.year} +{ year empty$ not + { year extract.before.slash + "--" * + year extract.after.slash + duplicate$ empty$ + 'pop$ + { * } + if$ + } + { date empty$ not + { date extract.before.dash } + { "empty year in " cite$ * warning$ + urldate empty$ not + { "[" urldate extract.before.dash * "]" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.date} +{ date empty$ not + { type$ "patent" = type$ "newspaper" = or + { date } + { entrysubtype empty$ not + { type$ "article" = entrysubtype "newspaper" = and + { date } + { format.year } + if$ + } + { format.year } + if$ + } + if$ + } + { year empty$ not + { format.year } + { "" } + if$ + } + if$ +} + +FUNCTION {format.editdate} +{ date empty$ not + { "\allowbreak(" date * ")" * } + { "" } + if$ +} + +FUNCTION {format.urldate} +{ show.urldate show.url and entry.url empty$ not and + is.pure.electronic or + urldate empty$ not and + { "\allowbreak[" urldate * "]" * } + { "" } + if$ +} + +FUNCTION {hyphenate} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { wave.dash.in.pages + { "~" * } + { "-" * } + if$ + { t #1 #1 substring$ "-" = } + { t #2 global.max$ substring$ 't := } + while$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages hyphenate } + if$ +} + +FUNCTION {format.extracted.pages} +{ pages empty$ + { "" } + { pages + only.start.page + 'extract.before.dash + 'hyphenate + if$ + } + if$ +} + +FUNCTION {format.journal.volume} +{ volume empty$ not + { bold.journal.volume + { "\textbf{" volume * "}" * } + { volume } + if$ + } + { "" } + if$ +} + +FUNCTION {format.journal.number} +{ number empty$ not + { "\allowbreak (" number * ")" * } + { "" } + if$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + { "" } + { format.extracted.pages } + if$ +} + +FUNCTION {format.periodical.year.volume.number} +{ year empty$ not + { year extract.before.slash } + { "empty year in periodical " cite$ * warning$ } + if$ + volume empty$ not + { ", " * volume extract.before.dash * } + 'skip$ + if$ + number empty$ not + { "\allowbreak (" * number extract.before.dash * ")" * } + 'skip$ + if$ + "--" * + year extract.after.slash empty$ + volume extract.after.dash empty$ and + number extract.after.dash empty$ and not + { year extract.after.slash empty$ not + { year extract.after.slash * } + { year extract.before.slash * } + if$ + volume empty$ not + { ", " * volume extract.after.dash * } + 'skip$ + if$ + number empty$ not + { "\allowbreak (" * number extract.after.dash * ")" * } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {check.url} +{ url empty$ not + { "\url{" url * "}" * 'entry.url := + #1 'entry.is.electronic := + } + { howpublished empty$ not + { howpublished #1 #5 substring$ "\url{" = + { howpublished 'entry.url := + #1 'entry.is.electronic := + } + 'skip$ + if$ + } + { note empty$ not + { note #1 #5 substring$ "\url{" = + { note 'entry.url := + #1 'entry.is.electronic := + } + 'skip$ + if$ + } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {output.url} +{ show.url is.pure.electronic or + entry.url empty$ not and + { new.block + entry.url output + } + 'skip$ + if$ +} + +FUNCTION {check.doi} +{ doi empty$ not + { #1 'entry.is.electronic := } + 'skip$ + if$ +} + +FUNCTION {is.in.url} +{ 's := + s empty$ + { #1 } + { entry.url empty$ + { #0 } + { s text.length$ 'len := + entry.url text.length$ 'charptr := + { entry.url charptr len substring$ s = not + charptr #0 > + and + } + { charptr #1 - 'charptr := } + while$ + charptr + } + if$ + } + if$ +} + +FUNCTION {format.doi} +{ "" + doi empty$ not + { "" 's := + doi 't := + #0 'numnames := + { t empty$ not} + { t #1 #1 substring$ 'tmp.str := + tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or + { t #2 #1 substring$ empty$ + { s tmp.str * 's := } + 'skip$ + if$ + s empty$ s is.in.url or + 'skip$ + { numnames #1 + 'numnames := + numnames #1 > + { ", " * } + { "DOI: " * } + if$ + "\doi{" s * "}" * * + } + if$ + "" 's := + } + { s tmp.str * 's := } + if$ + t #2 global.max$ substring$ 't := + } + while$ + } + 'skip$ + if$ +} + +FUNCTION {output.doi} +{ doi empty$ not show.doi and + show.english.translation entry.lang lang.zh = and not and + { new.block + format.doi output + } + 'skip$ + if$ +} + +FUNCTION {check.electronic} +{ "" 'entry.url := + #0 'entry.is.electronic := + 'check.doi + 'skip$ + if$ + 'check.url + 'skip$ + if$ + medium empty$ not + { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or + { #1 'entry.is.electronic := } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {format.eprint} +{ archivePrefix empty$ not + { archivePrefix } + { eprinttype empty$ not + { archivePrefix } + { "" } + if$ + } + if$ + 's := + s empty$ not + { s ": \eprint{" * + url empty$ not + { url } + { "https://" s "l" change.case$ * ".org/abs/" * eprint * } + if$ + * "}{" * + eprint * "}" * + } + { eprint } + if$ +} + +FUNCTION {output.eprint} +{ show.preprint eprint empty$ not and + { new.block + format.eprint output + } + 'skip$ + if$ +} + +FUNCTION {format.note} +{ note empty$ not show.note and + { note } + { "" } + if$ +} + +FUNCTION {output.translation} +{ show.english.translation entry.lang lang.zh = and + { translation empty$ not + { translation } + { "[English translation missing!]" } + if$ + " (in Chinese)" * output + write$ + format.doi duplicate$ empty$ not + { newline$ + write$ + } + 'pop$ + if$ + " \\" write$ + newline$ + "(" write$ + "" + before.all 'output.state := + } + 'skip$ + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ + year empty$ + and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {monograph} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + bbl.anonymous + } + if$ + } + if$ + output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.series.vol.num.title "title" output.check + "M" set.entry.mark + format.mark "" output.after + new.block + format.translators output + new.sentence + format.edition output + new.block + format.address.publisher output + year.after.author not + { format.year "year" output.check } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "M" set.entry.mark + format.mark "" output.after + new.block + format.translators output + new.slash + format.editors output + new.block + format.series.vol.num.booktitle "booktitle" output.check + new.block + format.edition output + new.block + format.address.publisher output + year.after.author not + { format.year "year" output.check } + 'skip$ + if$ + format.extracted.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {periodical} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "J" set.entry.mark + format.mark "" output.after + new.block + format.periodical.year.volume.number output + new.block + format.address.publisher output + year.after.author not + { format.periodical.year "year" output.check } + 'skip$ + if$ + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {journal.article} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + title.in.journal + { format.title "title" output.check + entrysubtype empty$ not + { + entrysubtype "newspaper" = + { "N" set.entry.mark } + { "J" set.entry.mark } + if$ + } + { "J" set.entry.mark } + if$ + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.journal "journal" output.check + year.after.author not + { format.date "year" output.check } + 'skip$ + if$ + format.journal.volume output + format.journal.number "" output.after + format.journal.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {patent} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "P" set.entry.mark + format.mark "" output.after + new.block + format.date "year" output.check + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {electronic} +{ #1 #1 check.electronic + #1 'entry.is.electronic := + #1 'is.pure.electronic := + output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.series.vol.num.title "title" output.check + "EB" set.entry.mark + format.mark "" output.after + new.block + format.address.publisher output + year.after.author not + { date empty$ + { format.date output } + 'skip$ + if$ + } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.editdate "" output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {preprint} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + bbl.anonymous + } + if$ + } + if$ + output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + title.in.journal + { format.series.vol.num.title "title" output.check + "A" set.entry.mark + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.translators output + new.sentence + format.edition output + new.block + year.after.author not + { date empty$ + { format.date output } + 'skip$ + if$ + } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.editdate "" output.after + format.urldate "" output.after + output.eprint + output.url + show.preprint not eprint empty$ or + 'output.doi + 'skip$ + if$ + new.block + format.note output + fin.entry +} + +FUNCTION {misc} +{ get.journal.title + duplicate$ empty$ not + { check.arxiv.preprint + 'preprint + 'journal.article + if$ + } + { pop$ + booktitle empty$ not + 'incollection + { publisher empty$ not + 'monograph + { eprint empty$ not archivePrefix empty$ not or + 'preprint + { entry.is.electronic + 'electronic + { + "Z" set.entry.mark + monograph + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + empty.misc.check +} + +FUNCTION {archive} +{ "A" set.entry.mark + misc +} + +FUNCTION {article} { misc } + +FUNCTION {book} { monograph } + +FUNCTION {booklet} { book } + +FUNCTION {collection} +{ "G" set.entry.mark + monograph +} + +FUNCTION {database} +{ "DB" set.entry.mark + electronic +} + +FUNCTION {dataset} +{ "DS" set.entry.mark + electronic +} + +FUNCTION {inbook} { + booktitle empty$ + 'book + 'incollection + if$ +} + +FUNCTION {inproceedings} +{ "C" set.entry.mark + incollection +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {legislation} { archive } + +FUNCTION {map} +{ "CM" set.entry.mark + misc +} + +FUNCTION {manual} { monograph } + +FUNCTION {thesis} +{ "D" set.entry.mark + monograph +} + +FUNCTION {newspaper} +{ "N" set.entry.mark + article +} + +FUNCTION {online} +{ "EB" set.entry.mark + electronic +} + +FUNCTION {mastersthesis} { thesis } + +FUNCTION {phdthesis} { thesis } + +FUNCTION {proceedings} +{ "C" set.entry.mark + monograph +} + +FUNCTION {software} +{ "CP" set.entry.mark + electronic +} + +FUNCTION {standard} +{ "S" set.entry.mark + misc +} + +FUNCTION {report} +{ "R" set.entry.mark + misc +} + +FUNCTION {techreport} { report } + +FUNCTION {unpublished} { misc } + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.name} +{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t "others" = + { citation.et.al } + { t get.str.lang 'name.lang := + name.lang lang.zh = name.lang lang.ja = or + { t #1 "{ll}{ff}" format.name$ } + { t #1 "{vv~}{ll}" format.name$ } + if$ + } + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 format.lab.name 'short.label := + #1 'nameptr := + s num.names$ 'numnames := + "" + numnames 'namesleft := + { namesleft #0 > } + { s nameptr format.lab.name citation.et.al = + numnames citation.et.al.min #1 - > nameptr citation.et.al.use.first > and or + { bbl.space * + citation.et.al * + #1 'namesleft := + } + { nameptr #1 > + { namesleft #1 = citation.and "" = not and + { citation.and * } + { ", " * } + if$ + } + 'skip$ + if$ + s nameptr format.lab.name * + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ "" 'short.label := + type$ "book" = + type$ "inbook" = booktitle empty$ not and + or + 'author.editor.key.label + { type$ "collection" = + type$ "proceedings" = + or + { editor empty$ not + 'editor.key.organization.label + 'author.key.organization.label + if$ + } + 'author.key.label + if$ + } + if$ + 'short.list := + short.label empty$ + { short.list 'short.label := } + 'skip$ + if$ +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list "]" contains + { "{" short.list * "}" * } + { short.list } + if$ + "(" + * + format.year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + duplicate$ "]" contains + { "{" swap$ * "}" * } + 'skip$ + if$ + * + 'label := + short.label + "(" + * + format.year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'short.label := +} + +FUNCTION {sort.language.label} +{ entry.lang lang.zh = + { lang.zh.order } + { entry.lang lang.ja = + { lang.ja.order } + { entry.lang lang.en = + { lang.en.order } + { entry.lang lang.ru = + { lang.ru.order } + { lang.other.order } + if$ + } + if$ + } + if$ + } + if$ + #64 + + int.to.chr$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { numnames #2 > nameptr #2 = and + { "zz" * year field.or.null * " " * } + 'skip$ + if$ + t sortify * + } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {anonymous.sort} +{ entry.lang lang.zh = + { "yi4 ming2" } + { "anon" } + if$ +} + +FUNCTION {warn.empty.key} +{ entry.lang lang.zh = + { "empty key in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {author.sort} +{ key empty$ + { warn.empty.key + author empty$ + { anonymous.sort } + { author sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {author.editor.sort} +{ key empty$ + { warn.empty.key + author empty$ + { editor empty$ + { anonymous.sort } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {author.organization.sort} +{ key empty$ + { warn.empty.key + author empty$ + { organization empty$ + { anonymous.sort } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {editor.organization.sort} +{ key empty$ + { warn.empty.key + editor empty$ + { organization empty$ + { anonymous.sort } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {presort} +{ set.entry.lang + set.entry.numbered + show.url show.doi check.electronic + #0 'is.pure.electronic := + calc.label + label sortify + " " + * + sort.language.label + " " + * + type$ "book" = + type$ "inbook" = booktitle empty$ not and + or + 'author.editor.sort + { type$ "collection" = + type$ "proceedings" = + or + 'editor.organization.sort + 'author.sort + if$ + } + if$ + * + " " + * + year field.or.null sortify + * + " " + * + cite$ + * + #1 entry.max$ substring$ + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +STRINGS { longest.label last.label next.extra last.extra.label } + +INTEGERS { longest.label.width number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'number.label := + "" 'last.extra.label := +} + +FUNCTION {forward.pass} +{ + last.label short.label = + { "" 'extra.label := + last.extra.label text.length$ 'charptr := + { last.extra.label charptr #1 substring$ "z" = + charptr #0 > and + } + { "a" extra.label * 'extra.label := + charptr #1 - 'charptr := + } + while$ + charptr #0 > + { last.extra.label charptr #1 substring$ chr.to.int$ #1 + int.to.chr$ + extra.label * 'extra.label := + last.extra.label #1 charptr #1 - substring$ + extra.label * 'extra.label := + } + { "a" extra.label * 'extra.label := } + if$ + extra.label 'last.extra.label := + } + { "a" 'last.extra.label := + "" 'extra.label := + short.label 'last.label := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ + next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + terms.in.macro + { "\providecommand{\biband}{和}" + write$ newline$ + "\providecommand{\bibetal}{等}" + write$ newline$ + } + 'skip$ + if$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\expandafter\ifx\csname urlstyle\endcsname\relax\else" + write$ newline$ + " \urlstyle{same}\fi" + write$ newline$ + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \DeclareUrlCommand\doi{\urlstyle{rm}}" + write$ newline$ + " \def\eprint#1#2{#2}" + write$ newline$ + "\else" + write$ newline$ + " \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}" + write$ newline$ + " \let\eprint\href" + write$ newline$ + "\fi" + write$ newline$ + } + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +READ + +EXECUTE {init.state.consts} + +EXECUTE {load.config} + +ITERATE {presort} + +SORT + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +ITERATE {bib.sort.order} + +SORT + +EXECUTE {begin.bib} + +ITERATE {call.type$} + +EXECUTE {end.bib} diff --git a/macros/unicodetex/latex/nxuthesis/nxuthesis-bachelor.bst b/macros/unicodetex/latex/nxuthesis/nxuthesis-bachelor.bst new file mode 100644 index 0000000000..67e1f7eeb3 --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/nxuthesis-bachelor.bst @@ -0,0 +1,2470 @@ +%% +%% This is file `variants/thu/thuthesis-bachelor.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gbt7714.dtx (with options: `2015,numerical') +%% ------------------------------------------------------------------- +%% GB/T 7714 BibTeX Style +%% https://github.com/zepinglee/gbt7714-bibtex-style +%% Version: 2024/03/08 v2.1.6 +%% ------------------------------------------------------------------- +%% Copyright (C) 2016--2024 by Zeping Lee <zepinglee AT gmail.com> +%% ------------------------------------------------------------------- +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% ------------------------------------------------------------------- +INTEGERS { + citation.et.al.min + citation.et.al.use.first + bibliography.et.al.min + bibliography.et.al.use.first + uppercase.name + terms.in.macro + year.after.author + period.after.author + italic.book.title + sentence.case.title + link.title + title.in.journal + show.patent.country + show.mark + space.before.mark + show.medium.type + short.journal + italic.journal + link.journal + bold.journal.volume + show.missing.address.publisher + space.before.pages + only.start.page + wave.dash.in.pages + show.urldate + show.url + show.doi + show.preprint + show.note + show.english.translation + end.with.period +} + +STRINGS { + component.part.label +} + +FUNCTION {load.config} +{ + #2 'citation.et.al.min := + #1 'citation.et.al.use.first := + #4 'bibliography.et.al.min := + #3 'bibliography.et.al.use.first := + #1 'uppercase.name := + #0 'terms.in.macro := + #0 'year.after.author := + #1 'period.after.author := + #0 'italic.book.title := + #1 'sentence.case.title := + #0 'link.title := + #1 'title.in.journal := + #0 'show.patent.country := + #1 'show.mark := + #0 'space.before.mark := + #1 'show.medium.type := + "slash" 'component.part.label := + #0 'short.journal := + #0 'italic.journal := + #0 'link.journal := + #0 'bold.journal.volume := + #0 'show.missing.address.publisher := + #1 'space.before.pages := + #0 'only.start.page := + #0 'wave.dash.in.pages := + #1 'show.urldate := + #1 'show.url := + #1 'show.doi := + #1 'show.preprint := + #0 'show.note := + #0 'show.english.translation := + #1 'end.with.period := +} + +ENTRY + { address + archivePrefix + author + booktitle + date + doi + edition + editor + eprint + eprinttype + entrysubtype + howpublished + institution + journal + journaltitle + key + langid + language + location + mark + medium + note + number + organization + pages + publisher + school + series + shortjournal + title + translation + translator + url + urldate + volume + year + } + { entry.lang entry.is.electronic is.pure.electronic entry.numbered } + { label extra.label sort.label short.label short.list entry.mark entry.url } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } + +INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } + +INTEGERS { charptr len } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.slash := + #3 'lang.zh := + #4 'lang.ja := + #1 'lang.en := + #2 'lang.ru := + #0 'lang.other := +} + +FUNCTION {bbl.anonymous} +{ entry.lang lang.zh = + { "佚名" } + { "Anon" } + if$ +} + +FUNCTION {bbl.space} +{ entry.lang lang.zh = + { "\ " } + { " " } + if$ +} + +FUNCTION {bbl.and} +{ "" } + +FUNCTION {bbl.et.al} +{ entry.lang lang.zh = + { "等" } + { entry.lang lang.ja = + { "他" } + { entry.lang lang.ru = + { "идр" } + { "et~al." } + if$ + } + if$ + } + if$ +} + +FUNCTION {citation.and} +{ terms.in.macro + { "{\biband}" } + 'bbl.and + if$ +} + +FUNCTION {citation.et.al} +{ terms.in.macro + { "{\bibetal}" } + 'bbl.et.al + if$ +} + +FUNCTION {bbl.colon} { ": " } + +FUNCTION {bbl.pages.colon} +{ space.before.pages + { ": " } + { ":\allowbreak " } + if$ +} + +FUNCTION {bbl.wide.space} { "\quad " } + +FUNCTION {bbl.slash} { "//\allowbreak " } + +FUNCTION {bbl.sine.loco} +{ entry.lang lang.zh = + { "[出版地不详]" } + { "[S.l.]" } + if$ +} + +FUNCTION {bbl.sine.nomine} +{ entry.lang lang.zh = + { "[出版者不详]" } + { "[s.n.]" } + if$ +} + +FUNCTION {bbl.sine.loco.sine.nomine} +{ entry.lang lang.zh = + { "[出版地不详: 出版者不详]" } + { "[S.l.: s.n.]" } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +STRINGS { x y } + +FUNCTION {contains} +{ 'y := + 'x := + y text.length$ 'len := + x text.length$ len - #1 + 'charptr := + { charptr #0 > + x charptr len substring$ y = not + and + } + { charptr #1 - 'charptr := } + while$ + charptr #0 > +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { bbl.slash * write$ + newline$ + } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.after} +{ 't := + duplicate$ empty$ + 'pop$ + { 's := + output.state mid.sentence = + { t * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { bbl.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s + } + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry} +{ end.with.period + 'add.period$ + 'skip$ + if$ + write$ + show.english.translation entry.lang lang.zh = and + { ")" + write$ + } + 'skip$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.block 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ + } + if$ +} + +FUNCTION {new.slash} +{ output.state before.all = + 'skip$ + { component.part.label "slash" = + { after.slash 'output.state := } + { new.block + component.part.label "in" = + { entry.lang lang.en = + { "In: " output + write$ + "" + before.all 'output.state := + } + 'skip$ + if$ + } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {format.btitle} +{ italic.book.title + entry.lang lang.en = and + 'emphasize + 'skip$ + if$ +} + +INTEGERS { byte second.byte } + +INTEGERS { char.lang tmp.lang } + +STRINGS { tmp.str } + +FUNCTION {get.str.lang} +{ 'tmp.str := + lang.other 'tmp.lang := + #1 'charptr := + tmp.str text.length$ #1 + 'len := + { charptr len < } + { tmp.str charptr #1 substring$ chr.to.int$ 'byte := + byte #128 < + { charptr #1 + 'charptr := + byte #64 > byte #91 < and byte #96 > byte #123 < and or + { lang.en 'char.lang := } + { lang.other 'char.lang := } + if$ + } + { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := + byte #224 < + { charptr #2 + 'charptr := + byte #207 > byte #212 < and + byte #212 = second.byte #176 < and or + { lang.ru 'char.lang := } + { lang.other 'char.lang := } + if$ + } + { byte #240 < + { charptr #3 + 'charptr := + byte #227 > byte #234 < and + { lang.zh 'char.lang := } + { byte #227 = + { second.byte #143 > + { lang.zh 'char.lang := } + { second.byte #128 > second.byte #132 < and + { lang.ja 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + { byte #239 = + second.byte #163 > second.byte #172 < and and + { lang.zh 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + if$ + } + { charptr #4 + 'charptr := + byte #240 = second.byte #159 > and + { lang.zh 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + if$ + } + if$ + char.lang tmp.lang > + { char.lang 'tmp.lang := } + 'skip$ + if$ + } + while$ + tmp.lang +} + +FUNCTION {check.entry.lang} +{ author field.or.null + title field.or.null * + get.str.lang +} + +STRINGS { entry.langid } + +FUNCTION {set.entry.lang} +{ "" 'entry.langid := + language empty$ not + { language 'entry.langid := } + 'skip$ + if$ + langid empty$ not + { langid 'entry.langid := } + 'skip$ + if$ + entry.langid empty$ + { check.entry.lang } + { entry.langid "english" = entry.langid "american" = or entry.langid "british" = or + { lang.en } + { entry.langid "chinese" = + { lang.zh } + { entry.langid "japanese" = + { lang.ja } + { entry.langid "russian" = + { lang.ru } + { check.entry.lang } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + 'entry.lang := +} + +FUNCTION {set.entry.numbered} +{ type$ "patent" = + type$ "standard" = or + type$ "techreport" = or + { #1 'entry.numbered := } + { #0 'entry.numbered := } + if$ +} + +INTEGERS { nameptr namesleft numnames name.lang } + +FUNCTION {format.name} +{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t "others" = + { bbl.et.al } + { t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}{ f{~}}" format.name$ + uppercase.name + { "u" change.case$ } + 'skip$ + if$ + t #1 "{, jj}" format.name$ * + } + { t #1 "{ll}{ff}" format.name$ } + if$ + } + if$ +} + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + "" + numnames 'namesleft := + { namesleft #0 > } + { s nameptr format.name bbl.et.al = + numnames bibliography.et.al.min #1 - > nameptr bibliography.et.al.use.first > and or + { ", " * + bbl.et.al * + #1 'namesleft := + } + { nameptr #1 > + { namesleft #1 = bbl.and "" = not and + { bbl.and * } + { ", " * } + if$ + } + 'skip$ + if$ + s nameptr format.name * + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ not + { author format.names } + { "empty author in " cite$ * warning$ + "" + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names } + if$ +} + +FUNCTION {format.translators} +{ translator empty$ + { "" } + { translator format.names + entry.lang lang.zh = + { translator num.names$ #3 > + { "译" * } + { ", 译" * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = booktitle empty$ not and + or + 'author.editor.full + { type$ "collection" = + type$ "proceedings" = + or + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label ")" * + make.full.names duplicate$ short.list = + { pop$ } + { duplicate$ "]" contains + { "{" swap$ * "}" * } + 'skip$ + if$ + * + } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {change.sentence.case} +{ entry.lang lang.en = + { "t" change.case$ } + 'skip$ + if$ +} + +FUNCTION {add.link} +{ url empty$ not + { "\href{" url * "}{" * swap$ * "}" * } + { doi empty$ not + { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered number empty$ not and + { bbl.colon * + type$ "patent" = show.patent.country and + { address empty$ not + { address * ", " * } + { location empty$ not + { location * ", " * } + { entry.lang lang.zh = + { "中国" * ", " * } + 'skip$ + if$ + } + if$ + } + if$ + } + 'skip$ + if$ + number * + } + 'skip$ + if$ + link.title + 'add.link + 'skip$ + if$ + } + if$ +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {is.digit} +{ duplicate$ empty$ + { pop$ #0 } + { chr.to.int$ + duplicate$ "0" chr.to.int$ < + { pop$ #0 } + { "9" chr.to.int$ > + { #0 } + { #1 } + if$ + } + if$ + } + if$ +} + +FUNCTION {is.number} +{ 's := + s empty$ + { #0 } + { s text.length$ 'charptr := + { charptr #0 > + s charptr #1 substring$ is.digit + and + } + { charptr #1 - 'charptr := } + while$ + charptr not + } + if$ +} + +FUNCTION {format.volume} +{ volume empty$ not + { volume is.number + { entry.lang lang.zh = + { "第 " volume * " 卷" * } + { "Vol." volume tie.or.space.connect } + if$ + } + { volume } + if$ + } + { "" } + if$ +} + +FUNCTION {format.number} +{ number empty$ not + { number is.number + { entry.lang lang.zh = + { "第 " number * " 册" * } + { "No." number tie.or.space.connect } + if$ + } + { number } + if$ + } + { "" } + if$ +} + +FUNCTION {format.volume.number} +{ volume empty$ not + { format.volume } + { format.number } + if$ +} + +FUNCTION {format.title.vol.num} +{ title + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered + { number empty$ not + { bbl.colon * number * } + 'skip$ + if$ + } + { format.volume.number 's := + s empty$ not + { bbl.colon * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.series.vol.num.title} +{ format.volume.number 's := + series empty$ not + { series + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered + { bbl.wide.space * } + { bbl.colon * + s empty$ not + { s * bbl.wide.space * } + 'skip$ + if$ + } + if$ + title * + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered number empty$ not and + { bbl.colon * number * } + 'skip$ + if$ + } + { format.title.vol.num } + if$ + format.btitle + link.title + 'add.link + 'skip$ + if$ +} + +FUNCTION {format.booktitle.vol.num} +{ booktitle + entry.numbered + 'skip$ + { format.volume.number 's := + s empty$ not + { bbl.colon * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.series.vol.num.booktitle} +{ format.volume.number 's := + series empty$ not + { series bbl.colon * + entry.numbered not s empty$ not and + { s * bbl.wide.space * } + 'skip$ + if$ + booktitle * + } + { format.booktitle.vol.num } + if$ + format.btitle +} + +FUNCTION {remove.period} +{ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ 'tmp.str := + tmp.str "." = not + { s tmp.str * 's := } + 'skip$ + if$ + t #2 global.max$ substring$ 't := + } + while$ + s +} + +FUNCTION {abbreviate} +{ remove.period + 't := + t "l" change.case$ 's := + "" + s "physical review letters" = + { "Phys Rev Lett" } + 'skip$ + if$ + 's := + s empty$ + { t } + { pop$ s } + if$ +} + +FUNCTION {get.journal.title} +{ short.journal + { shortjournal empty$ not + { shortjournal } + { journal empty$ not + { journal abbreviate } + { journaltitle empty$ not + { journaltitle abbreviate } + { "" } + if$ + } + if$ + } + if$ + } + { journal empty$ not + { journal } + { journaltitle empty$ not + { journaltitle } + { shortjournal empty$ not + { shortjournal } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {check.arxiv.preprint} +{ #1 #5 substring$ purify$ "l" change.case$ "arxiv" = + { #1 } + { #0 } + if$ +} + +FUNCTION {format.journal} +{ get.journal.title + duplicate$ empty$ not + { italic.journal entry.lang lang.en = and + 'emphasize + 'skip$ + if$ + link.journal + 'add.link + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {set.entry.mark} +{ entry.mark empty$ not + 'pop$ + { mark empty$ not + { pop$ mark 'entry.mark := } + { 'entry.mark := } + if$ + } + if$ +} + +FUNCTION {format.mark} +{ show.mark + { entry.mark + show.medium.type + { medium empty$ not + { "/" * medium * } + { entry.is.electronic + { "/OL" * } + 'skip$ + if$ + } + if$ + } + 'skip$ + if$ + 'entry.mark := + space.before.mark + { " " } + { "\allowbreak" } + if$ + "[" * entry.mark * "]" * + } + { "" } + if$ +} + +FUNCTION {num.to.ordinal} +{ duplicate$ text.length$ 'charptr := + duplicate$ charptr #1 substring$ 's := + s "1" = + { "st" * } + { s "2" = + { "nd" * } + { s "3" = + { "rd" * } + { "th" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { edition is.number + { edition "1" = not + { entry.lang lang.zh = + { edition " 版" * } + { edition num.to.ordinal " ed." * } + if$ + } + 'skip$ + if$ + } + { entry.lang lang.en = + { edition change.sentence.case 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." * } + if$ + } + { edition } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.publisher} +{ publisher empty$ not + { publisher } + { school empty$ not + { school } + { organization empty$ not + { organization } + { institution empty$ not + { institution } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.address.publisher} +{ address empty$ not + { address } + { location empty$ not + { location } + { "" } + if$ + } + if$ + duplicate$ empty$ not + { format.publisher empty$ not + { bbl.colon * format.publisher * } + { entry.is.electronic not show.missing.address.publisher and + { bbl.colon * bbl.sine.nomine * } + 'skip$ + if$ + } + if$ + } + { pop$ + entry.is.electronic not show.missing.address.publisher and + { format.publisher empty$ not + { bbl.sine.loco bbl.colon * format.publisher * } + { bbl.sine.loco.sine.nomine } + if$ + } + { format.publisher empty$ not + { format.publisher } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {extract.before.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr len < + s charptr #1 substring$ "-" = + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {extract.before.slash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "/" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.slash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + s charptr #1 substring$ "/" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr len < + s charptr #1 substring$ "-" = + s charptr #1 substring$ "/" = + or + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {format.year} +{ year empty$ not + { year extract.before.slash extra.label * } + { date empty$ not + { date extract.before.dash extra.label * } + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ + urldate empty$ not + { "[" urldate extract.before.dash * extra.label * "]" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.periodical.year} +{ year empty$ not + { year extract.before.slash + "--" * + year extract.after.slash + duplicate$ empty$ + 'pop$ + { * } + if$ + } + { date empty$ not + { date extract.before.dash } + { "empty year in " cite$ * warning$ + urldate empty$ not + { "[" urldate extract.before.dash * "]" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.date} +{ date empty$ not + { type$ "patent" = type$ "newspaper" = or + { date } + { entrysubtype empty$ not + { type$ "article" = entrysubtype "newspaper" = and + { date } + { format.year } + if$ + } + { format.year } + if$ + } + if$ + } + { year empty$ not + { format.year } + { "" } + if$ + } + if$ +} + +FUNCTION {format.editdate} +{ date empty$ not + { "\allowbreak(" date * ")" * } + { "" } + if$ +} + +FUNCTION {format.urldate} +{ show.urldate show.url and entry.url empty$ not and + is.pure.electronic or + urldate empty$ not and + { "\allowbreak[" urldate * "]" * } + { "" } + if$ +} + +FUNCTION {hyphenate} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { wave.dash.in.pages + { "~" * } + { "-" * } + if$ + { t #1 #1 substring$ "-" = } + { t #2 global.max$ substring$ 't := } + while$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages hyphenate } + if$ +} + +FUNCTION {format.extracted.pages} +{ pages empty$ + { "" } + { pages + only.start.page + 'extract.before.dash + 'hyphenate + if$ + } + if$ +} + +FUNCTION {format.journal.volume} +{ volume empty$ not + { bold.journal.volume + { "\textbf{" volume * "}" * } + { volume } + if$ + } + { "" } + if$ +} + +FUNCTION {format.journal.number} +{ number empty$ not + { "\allowbreak (" number * ")" * } + { "" } + if$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + { "" } + { format.extracted.pages } + if$ +} + +FUNCTION {format.periodical.year.volume.number} +{ year empty$ not + { year extract.before.slash } + { "empty year in periodical " cite$ * warning$ } + if$ + volume empty$ not + { ", " * volume extract.before.dash * } + 'skip$ + if$ + number empty$ not + { "\allowbreak (" * number extract.before.dash * ")" * } + 'skip$ + if$ + "--" * + year extract.after.slash empty$ + volume extract.after.dash empty$ and + number extract.after.dash empty$ and not + { year extract.after.slash empty$ not + { year extract.after.slash * } + { year extract.before.slash * } + if$ + volume empty$ not + { ", " * volume extract.after.dash * } + 'skip$ + if$ + number empty$ not + { "\allowbreak (" * number extract.after.dash * ")" * } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {check.url} +{ url empty$ not + { "\url{" url * "}" * 'entry.url := + #1 'entry.is.electronic := + } + { howpublished empty$ not + { howpublished #1 #5 substring$ "\url{" = + { howpublished 'entry.url := + #1 'entry.is.electronic := + } + 'skip$ + if$ + } + { note empty$ not + { note #1 #5 substring$ "\url{" = + { note 'entry.url := + #1 'entry.is.electronic := + } + 'skip$ + if$ + } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {output.url} +{ show.url is.pure.electronic or + entry.url empty$ not and + { new.block + entry.url output + } + 'skip$ + if$ +} + +FUNCTION {check.doi} +{ doi empty$ not + { #1 'entry.is.electronic := } + 'skip$ + if$ +} + +FUNCTION {is.in.url} +{ 's := + s empty$ + { #1 } + { entry.url empty$ + { #0 } + { s text.length$ 'len := + entry.url text.length$ 'charptr := + { entry.url charptr len substring$ s = not + charptr #0 > + and + } + { charptr #1 - 'charptr := } + while$ + charptr + } + if$ + } + if$ +} + +FUNCTION {format.doi} +{ "" + doi empty$ not + { "" 's := + doi 't := + #0 'numnames := + { t empty$ not} + { t #1 #1 substring$ 'tmp.str := + tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or + { t #2 #1 substring$ empty$ + { s tmp.str * 's := } + 'skip$ + if$ + s empty$ s is.in.url or + 'skip$ + { numnames #1 + 'numnames := + numnames #1 > + { ", " * } + { "DOI: " * } + if$ + "\doi{" s * "}" * * + } + if$ + "" 's := + } + { s tmp.str * 's := } + if$ + t #2 global.max$ substring$ 't := + } + while$ + } + 'skip$ + if$ +} + +FUNCTION {output.doi} +{ doi empty$ not show.doi and + show.english.translation entry.lang lang.zh = and not and + { new.block + format.doi output + } + 'skip$ + if$ +} + +FUNCTION {check.electronic} +{ "" 'entry.url := + #0 'entry.is.electronic := + 'check.doi + 'skip$ + if$ + 'check.url + 'skip$ + if$ + medium empty$ not + { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or + { #1 'entry.is.electronic := } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {format.eprint} +{ archivePrefix empty$ not + { archivePrefix } + { eprinttype empty$ not + { archivePrefix } + { "" } + if$ + } + if$ + 's := + s empty$ not + { s ": \eprint{" * + url empty$ not + { url } + { "https://" s "l" change.case$ * ".org/abs/" * eprint * } + if$ + * "}{" * + eprint * "}" * + } + { eprint } + if$ +} + +FUNCTION {output.eprint} +{ show.preprint eprint empty$ not and + { new.block + format.eprint output + } + 'skip$ + if$ +} + +FUNCTION {format.note} +{ note empty$ not show.note and + { note } + { "" } + if$ +} + +FUNCTION {output.translation} +{ show.english.translation entry.lang lang.zh = and + { translation empty$ not + { translation } + { "[English translation missing!]" } + if$ + " (in Chinese)" * output + write$ + format.doi duplicate$ empty$ not + { newline$ + write$ + } + 'pop$ + if$ + " \\" write$ + newline$ + "(" write$ + "" + before.all 'output.state := + } + 'skip$ + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ + year empty$ + and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {monograph} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + "" + } + if$ + } + if$ + output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.series.vol.num.title "title" output.check + "M" set.entry.mark + format.mark "" output.after + new.block + format.translators output + new.sentence + format.edition output + new.block + format.address.publisher output + year.after.author not + { format.year "year" output.check } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "M" set.entry.mark + format.mark "" output.after + new.block + format.translators output + new.slash + format.editors output + new.block + format.series.vol.num.booktitle "booktitle" output.check + new.block + format.edition output + new.block + format.address.publisher output + year.after.author not + { format.year "year" output.check } + 'skip$ + if$ + format.extracted.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {periodical} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "J" set.entry.mark + format.mark "" output.after + new.block + format.periodical.year.volume.number output + new.block + format.address.publisher output + year.after.author not + { format.periodical.year "year" output.check } + 'skip$ + if$ + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {journal.article} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + title.in.journal + { format.title "title" output.check + entrysubtype empty$ not + { + entrysubtype "newspaper" = + { "N" set.entry.mark } + { "J" set.entry.mark } + if$ + } + { "J" set.entry.mark } + if$ + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.journal "journal" output.check + year.after.author not + { format.date "year" output.check } + 'skip$ + if$ + format.journal.volume output + format.journal.number "" output.after + format.journal.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {patent} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "P" set.entry.mark + format.mark "" output.after + new.block + format.date "year" output.check + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {electronic} +{ #1 #1 check.electronic + #1 'entry.is.electronic := + #1 'is.pure.electronic := + output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.series.vol.num.title "title" output.check + "EB" set.entry.mark + format.mark "" output.after + new.block + format.address.publisher output + year.after.author not + { date empty$ + { format.date output } + 'skip$ + if$ + } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.editdate "" output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {preprint} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + "" + } + if$ + } + if$ + output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + title.in.journal + { format.series.vol.num.title "title" output.check + "A" set.entry.mark + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.translators output + new.sentence + format.edition output + new.block + year.after.author not + { date empty$ + { format.date output } + 'skip$ + if$ + } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.editdate "" output.after + format.urldate "" output.after + output.eprint + output.url + show.preprint not eprint empty$ or + 'output.doi + 'skip$ + if$ + new.block + format.note output + fin.entry +} + +FUNCTION {misc} +{ get.journal.title + duplicate$ empty$ not + { check.arxiv.preprint + 'preprint + 'journal.article + if$ + } + { pop$ + booktitle empty$ not + 'incollection + { publisher empty$ not + 'monograph + { eprint empty$ not archivePrefix empty$ not or + 'preprint + { entry.is.electronic + 'electronic + { + "Z" set.entry.mark + monograph + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + empty.misc.check +} + +FUNCTION {archive} +{ "A" set.entry.mark + misc +} + +FUNCTION {article} { misc } + +FUNCTION {book} { monograph } + +FUNCTION {booklet} { book } + +FUNCTION {collection} +{ "G" set.entry.mark + monograph +} + +FUNCTION {database} +{ "DB" set.entry.mark + electronic +} + +FUNCTION {dataset} +{ "DS" set.entry.mark + electronic +} + +FUNCTION {inbook} { + booktitle empty$ + 'book + 'incollection + if$ +} + +FUNCTION {inproceedings} +{ "C" set.entry.mark + incollection +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {legislation} { archive } + +FUNCTION {map} +{ "CM" set.entry.mark + misc +} + +FUNCTION {manual} { monograph } + +FUNCTION {thesis} +{ "D" set.entry.mark + monograph +} + +FUNCTION {newspaper} +{ "N" set.entry.mark + article +} + +FUNCTION {online} +{ "EB" set.entry.mark + electronic +} + +FUNCTION {mastersthesis} { thesis } + +FUNCTION {phdthesis} { thesis } + +FUNCTION {proceedings} +{ "C" set.entry.mark + monograph +} + +FUNCTION {software} +{ "CP" set.entry.mark + electronic +} + +FUNCTION {standard} +{ "S" set.entry.mark + misc +} + +FUNCTION {report} +{ "R" set.entry.mark + misc +} + +FUNCTION {techreport} { report } + +FUNCTION {unpublished} { misc } + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.name} +{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t "others" = + { citation.et.al } + { t get.str.lang 'name.lang := + name.lang lang.zh = name.lang lang.ja = or + { t #1 "{ll}{ff}" format.name$ } + { t #1 "{vv~}{ll}" format.name$ } + if$ + } + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 format.lab.name 'short.label := + #1 'nameptr := + s num.names$ 'numnames := + "" + numnames 'namesleft := + { namesleft #0 > } + { s nameptr format.lab.name citation.et.al = + numnames citation.et.al.min #1 - > nameptr citation.et.al.use.first > and or + { bbl.space * + citation.et.al * + #1 'namesleft := + } + { nameptr #1 > + { namesleft #1 = citation.and "" = not and + { citation.and * } + { ", " * } + if$ + } + 'skip$ + if$ + s nameptr format.lab.name * + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ "" 'short.label := + type$ "book" = + type$ "inbook" = booktitle empty$ not and + or + 'author.editor.key.label + { type$ "collection" = + type$ "proceedings" = + or + { editor empty$ not + 'editor.key.organization.label + 'author.key.organization.label + if$ + } + 'author.key.label + if$ + } + if$ + 'short.list := + short.label empty$ + { short.list 'short.label := } + 'skip$ + if$ +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list "]" contains + { "{" short.list * "}" * } + { short.list } + if$ + "(" + * + format.year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + duplicate$ "]" contains + { "{" swap$ * "}" * } + 'skip$ + if$ + * + 'label := + short.label + "(" + * + format.year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'short.label := +} + +INTEGERS { seq.num } + +FUNCTION {init.seq} +{ #0 'seq.num :=} + +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} + +FUNCTION {presort} +{ set.entry.lang + set.entry.numbered + show.url show.doi check.electronic + #0 'is.pure.electronic := + calc.label + label sortify + " " + * + seq.num #1 + 'seq.num := + seq.num int.to.fix + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +STRINGS { longest.label last.label next.extra last.extra.label } + +INTEGERS { longest.label.width number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'number.label := + "" 'last.extra.label := +} + +FUNCTION {forward.pass} +{ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ + label extra.label * 'label := +} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + terms.in.macro + { "\providecommand{\biband}{和}" + write$ newline$ + "\providecommand{\bibetal}{等}" + write$ newline$ + } + 'skip$ + if$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\expandafter\ifx\csname urlstyle\endcsname\relax\else" + write$ newline$ + " \urlstyle{same}\fi" + write$ newline$ + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \DeclareUrlCommand\doi{\urlstyle{rm}}" + write$ newline$ + " \def\eprint#1#2{#2}" + write$ newline$ + "\else" + write$ newline$ + " \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}" + write$ newline$ + " \let\eprint\href" + write$ newline$ + "\fi" + write$ newline$ + } + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +READ + +EXECUTE {init.state.consts} + +EXECUTE {load.config} + +EXECUTE {init.seq} + +ITERATE {presort} + +SORT + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +ITERATE {bib.sort.order} + +SORT + +EXECUTE {begin.bib} + +ITERATE {call.type$} + +EXECUTE {end.bib} diff --git a/macros/unicodetex/latex/nxuthesis/nxuthesis-example.pdf b/macros/unicodetex/latex/nxuthesis/nxuthesis-example.pdf Binary files differnew file mode 100644 index 0000000000..9da03213a7 --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/nxuthesis-example.pdf diff --git a/macros/unicodetex/latex/nxuthesis/nxuthesis-example.tex b/macros/unicodetex/latex/nxuthesis/nxuthesis-example.tex new file mode 100644 index 0000000000..07a77ea6fa --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/nxuthesis-example.tex @@ -0,0 +1,50 @@ +\documentclass[degree=master]{nxuthesis} + % 学位 degree: + % master(硕士) | doctor(博士) + % 学位类型 degree-type: + % academic(学术学位,默认)| professional(专业学位) + % 语言 language + % chinese(默认)| english + % 字体库 fontset + % windows | mac | fandol | ubuntu + % 建议终版使用 Windows 平台的字体编译 + +% 论文基本配置,加载宏包等全局配置 +\input{nxusetup} + +\begin{document} + +% 封面 +\maketitle + + +% 使用授权的说明 +\copyrightpage +% 将签字扫描后授权文件 scan-copyright.pdf 替换原始页面 +% \copyrightpage[file=scan-copyright.pdf] + +\frontmatter +\input{chapter/abstract} + +% 目录 +\tableofcontents + +% 正文部分 +\mainmatter +\input{chapter/chap01} +\input{chapter/chap02} + + +% 其他部分 +\backmatter + +% 参考文献 +\input{chapter/references} + +% 致谢 +\input{chapter/acknowledgements} + +% 个人简介及攻读硕士/博士学位期间论文发表情况 +\input{chapter/resume} + +\end{document}
\ No newline at end of file diff --git a/macros/unicodetex/latex/nxuthesis/nxuthesis-numeric.bst b/macros/unicodetex/latex/nxuthesis/nxuthesis-numeric.bst new file mode 100644 index 0000000000..b27da61efc --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/nxuthesis-numeric.bst @@ -0,0 +1,2470 @@ +%% +%% This is file `variants/thu/thuthesis-numeric.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gbt7714.dtx (with options: `2015,thu,numerical') +%% ------------------------------------------------------------------- +%% GB/T 7714 BibTeX Style +%% https://github.com/zepinglee/gbt7714-bibtex-style +%% Version: 2024/03/08 v2.1.6 +%% ------------------------------------------------------------------- +%% Copyright (C) 2016--2024 by Zeping Lee <zepinglee AT gmail.com> +%% ------------------------------------------------------------------- +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% ------------------------------------------------------------------- +INTEGERS { + citation.et.al.min + citation.et.al.use.first + bibliography.et.al.min + bibliography.et.al.use.first + uppercase.name + terms.in.macro + year.after.author + period.after.author + italic.book.title + sentence.case.title + link.title + title.in.journal + show.patent.country + show.mark + space.before.mark + show.medium.type + short.journal + italic.journal + link.journal + bold.journal.volume + show.missing.address.publisher + space.before.pages + only.start.page + wave.dash.in.pages + show.urldate + show.url + show.doi + show.preprint + show.note + show.english.translation + end.with.period +} + +STRINGS { + component.part.label +} + +FUNCTION {load.config} +{ + #2 'citation.et.al.min := + #1 'citation.et.al.use.first := + #4 'bibliography.et.al.min := + #3 'bibliography.et.al.use.first := + #0 'uppercase.name := + #0 'terms.in.macro := + #0 'year.after.author := + #1 'period.after.author := + #0 'italic.book.title := + #1 'sentence.case.title := + #0 'link.title := + #1 'title.in.journal := + #1 'show.patent.country := + #1 'show.mark := + #0 'space.before.mark := + #1 'show.medium.type := + "slash" 'component.part.label := + #0 'short.journal := + #0 'italic.journal := + #0 'link.journal := + #0 'bold.journal.volume := + #0 'show.missing.address.publisher := + #1 'space.before.pages := + #0 'only.start.page := + #0 'wave.dash.in.pages := + #1 'show.urldate := + #1 'show.url := + #1 'show.doi := + #1 'show.preprint := + #0 'show.note := + #0 'show.english.translation := + #1 'end.with.period := +} + +ENTRY + { address + archivePrefix + author + booktitle + date + doi + edition + editor + eprint + eprinttype + entrysubtype + howpublished + institution + journal + journaltitle + key + langid + language + location + mark + medium + note + number + organization + pages + publisher + school + series + shortjournal + title + translation + translator + url + urldate + volume + year + } + { entry.lang entry.is.electronic is.pure.electronic entry.numbered } + { label extra.label sort.label short.label short.list entry.mark entry.url } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } + +INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } + +INTEGERS { charptr len } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.slash := + #3 'lang.zh := + #4 'lang.ja := + #1 'lang.en := + #2 'lang.ru := + #0 'lang.other := +} + +FUNCTION {bbl.anonymous} +{ entry.lang lang.zh = + { "佚名" } + { "Anon" } + if$ +} + +FUNCTION {bbl.space} +{ entry.lang lang.zh = + { "\ " } + { " " } + if$ +} + +FUNCTION {bbl.and} +{ "" } + +FUNCTION {bbl.et.al} +{ entry.lang lang.zh = + { "等" } + { entry.lang lang.ja = + { "他" } + { entry.lang lang.ru = + { "идр" } + { "et~al." } + if$ + } + if$ + } + if$ +} + +FUNCTION {citation.and} +{ terms.in.macro + { "{\biband}" } + 'bbl.and + if$ +} + +FUNCTION {citation.et.al} +{ terms.in.macro + { "{\bibetal}" } + 'bbl.et.al + if$ +} + +FUNCTION {bbl.colon} { ": " } + +FUNCTION {bbl.pages.colon} +{ space.before.pages + { ": " } + { ":\allowbreak " } + if$ +} + +FUNCTION {bbl.wide.space} { "\quad " } + +FUNCTION {bbl.slash} { "//\allowbreak " } + +FUNCTION {bbl.sine.loco} +{ entry.lang lang.zh = + { "[出版地不详]" } + { "[S.l.]" } + if$ +} + +FUNCTION {bbl.sine.nomine} +{ entry.lang lang.zh = + { "[出版者不详]" } + { "[s.n.]" } + if$ +} + +FUNCTION {bbl.sine.loco.sine.nomine} +{ entry.lang lang.zh = + { "[出版地不详: 出版者不详]" } + { "[S.l.: s.n.]" } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +STRINGS { x y } + +FUNCTION {contains} +{ 'y := + 'x := + y text.length$ 'len := + x text.length$ len - #1 + 'charptr := + { charptr #0 > + x charptr len substring$ y = not + and + } + { charptr #1 - 'charptr := } + while$ + charptr #0 > +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { bbl.slash * write$ + newline$ + } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.after} +{ 't := + duplicate$ empty$ + 'pop$ + { 's := + output.state mid.sentence = + { t * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { bbl.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s + } + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry} +{ end.with.period + 'add.period$ + 'skip$ + if$ + write$ + show.english.translation entry.lang lang.zh = and + { ")" + write$ + } + 'skip$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.block 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ + } + if$ +} + +FUNCTION {new.slash} +{ output.state before.all = + 'skip$ + { component.part.label "slash" = + { after.slash 'output.state := } + { new.block + component.part.label "in" = + { entry.lang lang.en = + { "In: " output + write$ + "" + before.all 'output.state := + } + 'skip$ + if$ + } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {format.btitle} +{ italic.book.title + entry.lang lang.en = and + 'emphasize + 'skip$ + if$ +} + +INTEGERS { byte second.byte } + +INTEGERS { char.lang tmp.lang } + +STRINGS { tmp.str } + +FUNCTION {get.str.lang} +{ 'tmp.str := + lang.other 'tmp.lang := + #1 'charptr := + tmp.str text.length$ #1 + 'len := + { charptr len < } + { tmp.str charptr #1 substring$ chr.to.int$ 'byte := + byte #128 < + { charptr #1 + 'charptr := + byte #64 > byte #91 < and byte #96 > byte #123 < and or + { lang.en 'char.lang := } + { lang.other 'char.lang := } + if$ + } + { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := + byte #224 < + { charptr #2 + 'charptr := + byte #207 > byte #212 < and + byte #212 = second.byte #176 < and or + { lang.ru 'char.lang := } + { lang.other 'char.lang := } + if$ + } + { byte #240 < + { charptr #3 + 'charptr := + byte #227 > byte #234 < and + { lang.zh 'char.lang := } + { byte #227 = + { second.byte #143 > + { lang.zh 'char.lang := } + { second.byte #128 > second.byte #132 < and + { lang.ja 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + { byte #239 = + second.byte #163 > second.byte #172 < and and + { lang.zh 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + if$ + } + { charptr #4 + 'charptr := + byte #240 = second.byte #159 > and + { lang.zh 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + if$ + } + if$ + char.lang tmp.lang > + { char.lang 'tmp.lang := } + 'skip$ + if$ + } + while$ + tmp.lang +} + +FUNCTION {check.entry.lang} +{ author field.or.null + title field.or.null * + get.str.lang +} + +STRINGS { entry.langid } + +FUNCTION {set.entry.lang} +{ "" 'entry.langid := + language empty$ not + { language 'entry.langid := } + 'skip$ + if$ + langid empty$ not + { langid 'entry.langid := } + 'skip$ + if$ + entry.langid empty$ + { check.entry.lang } + { entry.langid "english" = entry.langid "american" = or entry.langid "british" = or + { lang.en } + { entry.langid "chinese" = + { lang.zh } + { entry.langid "japanese" = + { lang.ja } + { entry.langid "russian" = + { lang.ru } + { check.entry.lang } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + 'entry.lang := +} + +FUNCTION {set.entry.numbered} +{ type$ "patent" = + type$ "standard" = or + type$ "techreport" = or + { #1 'entry.numbered := } + { #0 'entry.numbered := } + if$ +} + +INTEGERS { nameptr namesleft numnames name.lang } + +FUNCTION {format.name} +{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t "others" = + { bbl.et.al } + { t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}{ f{~}}" format.name$ + uppercase.name + { "u" change.case$ } + 'skip$ + if$ + t #1 "{, jj}" format.name$ * + } + { t #1 "{ll}{ff}" format.name$ } + if$ + } + if$ +} + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + "" + numnames 'namesleft := + { namesleft #0 > } + { s nameptr format.name bbl.et.al = + numnames bibliography.et.al.min #1 - > nameptr bibliography.et.al.use.first > and or + { ", " * + bbl.et.al * + #1 'namesleft := + } + { nameptr #1 > + { namesleft #1 = bbl.and "" = not and + { bbl.and * } + { ", " * } + if$ + } + 'skip$ + if$ + s nameptr format.name * + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ not + { author format.names } + { "empty author in " cite$ * warning$ + "" + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names } + if$ +} + +FUNCTION {format.translators} +{ translator empty$ + { "" } + { translator format.names + entry.lang lang.zh = + { translator num.names$ #3 > + { "译" * } + { ", 译" * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = booktitle empty$ not and + or + 'author.editor.full + { type$ "collection" = + type$ "proceedings" = + or + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label ")" * + make.full.names duplicate$ short.list = + { pop$ } + { duplicate$ "]" contains + { "{" swap$ * "}" * } + 'skip$ + if$ + * + } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {change.sentence.case} +{ entry.lang lang.en = + { "t" change.case$ } + 'skip$ + if$ +} + +FUNCTION {add.link} +{ url empty$ not + { "\href{" url * "}{" * swap$ * "}" * } + { doi empty$ not + { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered number empty$ not and + { bbl.colon * + type$ "patent" = show.patent.country and + { address empty$ not + { address * ", " * } + { location empty$ not + { location * ", " * } + { entry.lang lang.zh = + { "中国" * ", " * } + 'skip$ + if$ + } + if$ + } + if$ + } + 'skip$ + if$ + number * + } + 'skip$ + if$ + link.title + 'add.link + 'skip$ + if$ + } + if$ +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {is.digit} +{ duplicate$ empty$ + { pop$ #0 } + { chr.to.int$ + duplicate$ "0" chr.to.int$ < + { pop$ #0 } + { "9" chr.to.int$ > + { #0 } + { #1 } + if$ + } + if$ + } + if$ +} + +FUNCTION {is.number} +{ 's := + s empty$ + { #0 } + { s text.length$ 'charptr := + { charptr #0 > + s charptr #1 substring$ is.digit + and + } + { charptr #1 - 'charptr := } + while$ + charptr not + } + if$ +} + +FUNCTION {format.volume} +{ volume empty$ not + { volume is.number + { entry.lang lang.zh = + { "第 " volume * " 卷" * } + { "Vol." volume tie.or.space.connect } + if$ + } + { volume } + if$ + } + { "" } + if$ +} + +FUNCTION {format.number} +{ number empty$ not + { number is.number + { entry.lang lang.zh = + { "第 " number * " 册" * } + { "No." number tie.or.space.connect } + if$ + } + { number } + if$ + } + { "" } + if$ +} + +FUNCTION {format.volume.number} +{ volume empty$ not + { format.volume } + { format.number } + if$ +} + +FUNCTION {format.title.vol.num} +{ title + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered + { number empty$ not + { bbl.colon * number * } + 'skip$ + if$ + } + { format.volume.number 's := + s empty$ not + { bbl.colon * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.series.vol.num.title} +{ format.volume.number 's := + series empty$ not + { series + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered + { bbl.wide.space * } + { bbl.colon * + s empty$ not + { s * bbl.wide.space * } + 'skip$ + if$ + } + if$ + title * + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered number empty$ not and + { bbl.colon * number * } + 'skip$ + if$ + } + { format.title.vol.num } + if$ + format.btitle + link.title + 'add.link + 'skip$ + if$ +} + +FUNCTION {format.booktitle.vol.num} +{ booktitle + entry.numbered + 'skip$ + { format.volume.number 's := + s empty$ not + { bbl.colon * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.series.vol.num.booktitle} +{ format.volume.number 's := + series empty$ not + { series bbl.colon * + entry.numbered not s empty$ not and + { s * bbl.wide.space * } + 'skip$ + if$ + booktitle * + } + { format.booktitle.vol.num } + if$ + format.btitle +} + +FUNCTION {remove.period} +{ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ 'tmp.str := + tmp.str "." = not + { s tmp.str * 's := } + 'skip$ + if$ + t #2 global.max$ substring$ 't := + } + while$ + s +} + +FUNCTION {abbreviate} +{ remove.period + 't := + t "l" change.case$ 's := + "" + s "physical review letters" = + { "Phys Rev Lett" } + 'skip$ + if$ + 's := + s empty$ + { t } + { pop$ s } + if$ +} + +FUNCTION {get.journal.title} +{ short.journal + { shortjournal empty$ not + { shortjournal } + { journal empty$ not + { journal abbreviate } + { journaltitle empty$ not + { journaltitle abbreviate } + { "" } + if$ + } + if$ + } + if$ + } + { journal empty$ not + { journal } + { journaltitle empty$ not + { journaltitle } + { shortjournal empty$ not + { shortjournal } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {check.arxiv.preprint} +{ #1 #5 substring$ purify$ "l" change.case$ "arxiv" = + { #1 } + { #0 } + if$ +} + +FUNCTION {format.journal} +{ get.journal.title + duplicate$ empty$ not + { italic.journal entry.lang lang.en = and + 'emphasize + 'skip$ + if$ + link.journal + 'add.link + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {set.entry.mark} +{ entry.mark empty$ not + 'pop$ + { mark empty$ not + { pop$ mark 'entry.mark := } + { 'entry.mark := } + if$ + } + if$ +} + +FUNCTION {format.mark} +{ show.mark + { entry.mark + show.medium.type + { medium empty$ not + { "/" * medium * } + { entry.is.electronic + { "/OL" * } + 'skip$ + if$ + } + if$ + } + 'skip$ + if$ + 'entry.mark := + space.before.mark + { " " } + { "\allowbreak" } + if$ + "[" * entry.mark * "]" * + } + { "" } + if$ +} + +FUNCTION {num.to.ordinal} +{ duplicate$ text.length$ 'charptr := + duplicate$ charptr #1 substring$ 's := + s "1" = + { "st" * } + { s "2" = + { "nd" * } + { s "3" = + { "rd" * } + { "th" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { edition is.number + { edition "1" = not + { entry.lang lang.zh = + { edition " 版" * } + { edition num.to.ordinal " ed." * } + if$ + } + 'skip$ + if$ + } + { entry.lang lang.en = + { edition change.sentence.case 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." * } + if$ + } + { edition } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.publisher} +{ publisher empty$ not + { publisher } + { school empty$ not + { school } + { organization empty$ not + { organization } + { institution empty$ not + { institution } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.address.publisher} +{ address empty$ not + { address } + { location empty$ not + { location } + { "" } + if$ + } + if$ + duplicate$ empty$ not + { format.publisher empty$ not + { bbl.colon * format.publisher * } + { entry.is.electronic not show.missing.address.publisher and + { bbl.colon * bbl.sine.nomine * } + 'skip$ + if$ + } + if$ + } + { pop$ + entry.is.electronic not show.missing.address.publisher and + { format.publisher empty$ not + { bbl.sine.loco bbl.colon * format.publisher * } + { bbl.sine.loco.sine.nomine } + if$ + } + { format.publisher empty$ not + { format.publisher } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {extract.before.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr len < + s charptr #1 substring$ "-" = + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {extract.before.slash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "/" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.slash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + s charptr #1 substring$ "/" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr len < + s charptr #1 substring$ "-" = + s charptr #1 substring$ "/" = + or + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {format.year} +{ year empty$ not + { year extract.before.slash extra.label * } + { date empty$ not + { date extract.before.dash extra.label * } + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ + urldate empty$ not + { "[" urldate extract.before.dash * extra.label * "]" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.periodical.year} +{ year empty$ not + { year extract.before.slash + "--" * + year extract.after.slash + duplicate$ empty$ + 'pop$ + { * } + if$ + } + { date empty$ not + { date extract.before.dash } + { "empty year in " cite$ * warning$ + urldate empty$ not + { "[" urldate extract.before.dash * "]" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.date} +{ date empty$ not + { type$ "patent" = type$ "newspaper" = or + { date } + { entrysubtype empty$ not + { type$ "article" = entrysubtype "newspaper" = and + { date } + { format.year } + if$ + } + { format.year } + if$ + } + if$ + } + { year empty$ not + { format.year } + { "" } + if$ + } + if$ +} + +FUNCTION {format.editdate} +{ date empty$ not + { "\allowbreak(" date * ")" * } + { "" } + if$ +} + +FUNCTION {format.urldate} +{ show.urldate show.url and entry.url empty$ not and + is.pure.electronic or + urldate empty$ not and + { "\allowbreak[" urldate * "]" * } + { "" } + if$ +} + +FUNCTION {hyphenate} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { wave.dash.in.pages + { "~" * } + { "-" * } + if$ + { t #1 #1 substring$ "-" = } + { t #2 global.max$ substring$ 't := } + while$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages hyphenate } + if$ +} + +FUNCTION {format.extracted.pages} +{ pages empty$ + { "" } + { pages + only.start.page + 'extract.before.dash + 'hyphenate + if$ + } + if$ +} + +FUNCTION {format.journal.volume} +{ volume empty$ not + { bold.journal.volume + { "\textbf{" volume * "}" * } + { volume } + if$ + } + { "" } + if$ +} + +FUNCTION {format.journal.number} +{ number empty$ not + { "\allowbreak (" number * ")" * } + { "" } + if$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + { "" } + { format.extracted.pages } + if$ +} + +FUNCTION {format.periodical.year.volume.number} +{ year empty$ not + { year extract.before.slash } + { "empty year in periodical " cite$ * warning$ } + if$ + volume empty$ not + { ", " * volume extract.before.dash * } + 'skip$ + if$ + number empty$ not + { "\allowbreak (" * number extract.before.dash * ")" * } + 'skip$ + if$ + "--" * + year extract.after.slash empty$ + volume extract.after.dash empty$ and + number extract.after.dash empty$ and not + { year extract.after.slash empty$ not + { year extract.after.slash * } + { year extract.before.slash * } + if$ + volume empty$ not + { ", " * volume extract.after.dash * } + 'skip$ + if$ + number empty$ not + { "\allowbreak (" * number extract.after.dash * ")" * } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {check.url} +{ url empty$ not + { "\url{" url * "}" * 'entry.url := + #1 'entry.is.electronic := + } + { howpublished empty$ not + { howpublished #1 #5 substring$ "\url{" = + { howpublished 'entry.url := + #1 'entry.is.electronic := + } + 'skip$ + if$ + } + { note empty$ not + { note #1 #5 substring$ "\url{" = + { note 'entry.url := + #1 'entry.is.electronic := + } + 'skip$ + if$ + } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {output.url} +{ show.url is.pure.electronic or + entry.url empty$ not and + { new.block + entry.url output + } + 'skip$ + if$ +} + +FUNCTION {check.doi} +{ doi empty$ not + { #1 'entry.is.electronic := } + 'skip$ + if$ +} + +FUNCTION {is.in.url} +{ 's := + s empty$ + { #1 } + { entry.url empty$ + { #0 } + { s text.length$ 'len := + entry.url text.length$ 'charptr := + { entry.url charptr len substring$ s = not + charptr #0 > + and + } + { charptr #1 - 'charptr := } + while$ + charptr + } + if$ + } + if$ +} + +FUNCTION {format.doi} +{ "" + doi empty$ not + { "" 's := + doi 't := + #0 'numnames := + { t empty$ not} + { t #1 #1 substring$ 'tmp.str := + tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or + { t #2 #1 substring$ empty$ + { s tmp.str * 's := } + 'skip$ + if$ + s empty$ s is.in.url or + 'skip$ + { numnames #1 + 'numnames := + numnames #1 > + { ", " * } + { "DOI: " * } + if$ + "\doi{" s * "}" * * + } + if$ + "" 's := + } + { s tmp.str * 's := } + if$ + t #2 global.max$ substring$ 't := + } + while$ + } + 'skip$ + if$ +} + +FUNCTION {output.doi} +{ doi empty$ not show.doi and + show.english.translation entry.lang lang.zh = and not and + { new.block + format.doi output + } + 'skip$ + if$ +} + +FUNCTION {check.electronic} +{ "" 'entry.url := + #0 'entry.is.electronic := + 'check.doi + 'skip$ + if$ + 'check.url + 'skip$ + if$ + medium empty$ not + { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or + { #1 'entry.is.electronic := } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {format.eprint} +{ archivePrefix empty$ not + { archivePrefix } + { eprinttype empty$ not + { archivePrefix } + { "" } + if$ + } + if$ + 's := + s empty$ not + { s ": \eprint{" * + url empty$ not + { url } + { "https://" s "l" change.case$ * ".org/abs/" * eprint * } + if$ + * "}{" * + eprint * "}" * + } + { eprint } + if$ +} + +FUNCTION {output.eprint} +{ show.preprint eprint empty$ not and + { new.block + format.eprint output + } + 'skip$ + if$ +} + +FUNCTION {format.note} +{ note empty$ not show.note and + { note } + { "" } + if$ +} + +FUNCTION {output.translation} +{ show.english.translation entry.lang lang.zh = and + { translation empty$ not + { translation } + { "[English translation missing!]" } + if$ + " (in Chinese)" * output + write$ + format.doi duplicate$ empty$ not + { newline$ + write$ + } + 'pop$ + if$ + " \\" write$ + newline$ + "(" write$ + "" + before.all 'output.state := + } + 'skip$ + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ + year empty$ + and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {monograph} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + "" + } + if$ + } + if$ + output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.series.vol.num.title "title" output.check + "M" set.entry.mark + format.mark "" output.after + new.block + format.translators output + new.sentence + format.edition output + new.block + format.address.publisher output + year.after.author not + { format.year "year" output.check } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "M" set.entry.mark + format.mark "" output.after + new.block + format.translators output + new.slash + format.editors output + new.block + format.series.vol.num.booktitle "booktitle" output.check + new.block + format.edition output + new.block + format.address.publisher output + year.after.author not + { format.year "year" output.check } + 'skip$ + if$ + format.extracted.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {periodical} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "J" set.entry.mark + format.mark "" output.after + new.block + format.periodical.year.volume.number output + new.block + format.address.publisher output + year.after.author not + { format.periodical.year "year" output.check } + 'skip$ + if$ + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {journal.article} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + title.in.journal + { format.title "title" output.check + entrysubtype empty$ not + { + entrysubtype "newspaper" = + { "N" set.entry.mark } + { "J" set.entry.mark } + if$ + } + { "J" set.entry.mark } + if$ + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.journal "journal" output.check + year.after.author not + { format.date "year" output.check } + 'skip$ + if$ + format.journal.volume output + format.journal.number "" output.after + format.journal.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {patent} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "P" set.entry.mark + format.mark "" output.after + new.block + format.date "year" output.check + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {electronic} +{ #1 #1 check.electronic + #1 'entry.is.electronic := + #1 'is.pure.electronic := + output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.series.vol.num.title "title" output.check + "EB" set.entry.mark + format.mark "" output.after + new.block + format.address.publisher output + year.after.author not + { date empty$ + { format.date output } + 'skip$ + if$ + } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.editdate "" output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {preprint} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + "" + } + if$ + } + if$ + output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + title.in.journal + { format.series.vol.num.title "title" output.check + "A" set.entry.mark + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.translators output + new.sentence + format.edition output + new.block + year.after.author not + { date empty$ + { format.date output } + 'skip$ + if$ + } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.editdate "" output.after + format.urldate "" output.after + output.eprint + output.url + show.preprint not eprint empty$ or + 'output.doi + 'skip$ + if$ + new.block + format.note output + fin.entry +} + +FUNCTION {misc} +{ get.journal.title + duplicate$ empty$ not + { check.arxiv.preprint + 'preprint + 'journal.article + if$ + } + { pop$ + booktitle empty$ not + 'incollection + { publisher empty$ not + 'monograph + { eprint empty$ not archivePrefix empty$ not or + 'preprint + { entry.is.electronic + 'electronic + { + "Z" set.entry.mark + monograph + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + empty.misc.check +} + +FUNCTION {archive} +{ "A" set.entry.mark + misc +} + +FUNCTION {article} { misc } + +FUNCTION {book} { monograph } + +FUNCTION {booklet} { book } + +FUNCTION {collection} +{ "G" set.entry.mark + monograph +} + +FUNCTION {database} +{ "DB" set.entry.mark + electronic +} + +FUNCTION {dataset} +{ "DS" set.entry.mark + electronic +} + +FUNCTION {inbook} { + booktitle empty$ + 'book + 'incollection + if$ +} + +FUNCTION {inproceedings} +{ "C" set.entry.mark + incollection +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {legislation} { archive } + +FUNCTION {map} +{ "CM" set.entry.mark + misc +} + +FUNCTION {manual} { monograph } + +FUNCTION {thesis} +{ "D" set.entry.mark + monograph +} + +FUNCTION {newspaper} +{ "N" set.entry.mark + article +} + +FUNCTION {online} +{ "EB" set.entry.mark + electronic +} + +FUNCTION {mastersthesis} { thesis } + +FUNCTION {phdthesis} { thesis } + +FUNCTION {proceedings} +{ "C" set.entry.mark + monograph +} + +FUNCTION {software} +{ "CP" set.entry.mark + electronic +} + +FUNCTION {standard} +{ "S" set.entry.mark + misc +} + +FUNCTION {report} +{ "R" set.entry.mark + misc +} + +FUNCTION {techreport} { report } + +FUNCTION {unpublished} { misc } + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.name} +{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t "others" = + { citation.et.al } + { t get.str.lang 'name.lang := + name.lang lang.zh = name.lang lang.ja = or + { t #1 "{ll}{ff}" format.name$ } + { t #1 "{vv~}{ll}" format.name$ } + if$ + } + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 format.lab.name 'short.label := + #1 'nameptr := + s num.names$ 'numnames := + "" + numnames 'namesleft := + { namesleft #0 > } + { s nameptr format.lab.name citation.et.al = + numnames citation.et.al.min #1 - > nameptr citation.et.al.use.first > and or + { bbl.space * + citation.et.al * + #1 'namesleft := + } + { nameptr #1 > + { namesleft #1 = citation.and "" = not and + { citation.and * } + { ", " * } + if$ + } + 'skip$ + if$ + s nameptr format.lab.name * + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ "" 'short.label := + type$ "book" = + type$ "inbook" = booktitle empty$ not and + or + 'author.editor.key.label + { type$ "collection" = + type$ "proceedings" = + or + { editor empty$ not + 'editor.key.organization.label + 'author.key.organization.label + if$ + } + 'author.key.label + if$ + } + if$ + 'short.list := + short.label empty$ + { short.list 'short.label := } + 'skip$ + if$ +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list "]" contains + { "{" short.list * "}" * } + { short.list } + if$ + "(" + * + format.year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + duplicate$ "]" contains + { "{" swap$ * "}" * } + 'skip$ + if$ + * + 'label := + short.label + "(" + * + format.year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'short.label := +} + +INTEGERS { seq.num } + +FUNCTION {init.seq} +{ #0 'seq.num :=} + +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} + +FUNCTION {presort} +{ set.entry.lang + set.entry.numbered + show.url show.doi check.electronic + #0 'is.pure.electronic := + calc.label + label sortify + " " + * + seq.num #1 + 'seq.num := + seq.num int.to.fix + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +STRINGS { longest.label last.label next.extra last.extra.label } + +INTEGERS { longest.label.width number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'number.label := + "" 'last.extra.label := +} + +FUNCTION {forward.pass} +{ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ + label extra.label * 'label := +} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + terms.in.macro + { "\providecommand{\biband}{和}" + write$ newline$ + "\providecommand{\bibetal}{等}" + write$ newline$ + } + 'skip$ + if$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\expandafter\ifx\csname urlstyle\endcsname\relax\else" + write$ newline$ + " \urlstyle{same}\fi" + write$ newline$ + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \DeclareUrlCommand\doi{\urlstyle{rm}}" + write$ newline$ + " \def\eprint#1#2{#2}" + write$ newline$ + "\else" + write$ newline$ + " \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}" + write$ newline$ + " \let\eprint\href" + write$ newline$ + "\fi" + write$ newline$ + } + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +READ + +EXECUTE {init.state.consts} + +EXECUTE {load.config} + +EXECUTE {init.seq} + +ITERATE {presort} + +SORT + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +ITERATE {bib.sort.order} + +SORT + +EXECUTE {begin.bib} + +ITERATE {call.type$} + +EXECUTE {end.bib} diff --git a/macros/unicodetex/latex/nxuthesis/nxuthesis.cls b/macros/unicodetex/latex/nxuthesis/nxuthesis.cls new file mode 100644 index 0000000000..4849dc4705 --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/nxuthesis.cls @@ -0,0 +1,3531 @@ +%% +%% This is file `nxuthesis.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% This is a generated file. +%% +%% Copyright (C) 2024 by Xianyuan Bao <baoxianyuan@126.com> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% To produce the documentation run the original source files ending with `.dtx' +%% through LaTeX. +%% +\NeedsTeXFormat{LaTeX2e}[2017/04/15] +\ProvidesClass{nxuthesis} +[2024/05/20 1.0.0 Ningxia University Thesis Template] +\newcommand\nxu@error[1]{% + \ClassError{nxuthesis}{#1}{}% +} +\newcommand\nxu@warning[1]{% + \ClassWarning{nxuthesis}{#1}% +} +\newcommand\nxu@debug[1]{% + \typeout{Package nxuthesis Info: #1}% +} +\newcommand\nxu@patch@error[1]{% + \nxu@error{Failed to patch command \protect#1}% +} +\newcommand\nxu@deprecate[2]{% + \def\nxu@@tmp{#2}% + \nxu@warning{% + The #1 is deprecated% + \ifx\nxu@@tmp\@empty\else + . Use #2 instead% + \fi + }% +} +\@ifl@t@r\fmtversion{2017/04/15}{}{ + \nxu@error{% + TeX Live 2017 or later version is required to compile this document% + } +} +\RequirePackage{iftex} +\ifXeTeX\else + \ifLuaTeX\else + \nxu@error{XeLaTeX or LuaLaTeX is required to compile this document} + \fi +\fi +\InputIfFileExists{nxuthesis-pdf-test-config.tex}{}{ + \InputIfFileExists{nxuthesis-log-test-config.tex}{}{} +} +\hyphenation{Nxu-Thesis} +\def\nxuthesis{nxuthesis} +\def\version{1.0.0} +\RequirePackage{kvdefinekeys} +\RequirePackage{kvsetkeys} +\RequirePackage{kvoptions} +\SetupKeyvalOptions{ + family=nxu, + prefix=nxu@, + setkeys=\kvsetkeys} +\let\nxu@setup@hook\@empty +\newcommand\nxusetup[1]{% + \let\nxu@setup@hook\@empty + \kvsetkeys{nxu}{#1}% + \nxu@setup@hook +} +\newcommand\nxu@define@key[1]{% + \kvsetkeys{nxu@key}{#1}% +} +\kv@set@family@handler{nxu@key}{% + \@namedef{nxu@#1@@name}{#1}% + \def\nxu@@default{}% + \def\nxu@@choices{}% + \kv@define@key{nxu@value}{name}{% + \@namedef{nxu@#1@@name}{##1}% + }% + \@namedef{nxu@#1@@check}{}% + \@namedef{nxu@#1@@code}{}% + \kv@define@key{nxu@value}{choices}{% + \def\nxu@@choices{##1}% + \@namedef{nxu@#1@@reset}{}% + \@namedef{nxu@#1@@check}{% + \@ifundefined{% + ifnxu@\@nameuse{nxu@#1@@name}@\@nameuse{nxu@\@nameuse{nxu@#1@@name}}% + }{% + \nxu@error{Invalid value "#1 = \@nameuse{nxu@\@nameuse{nxu@#1@@name}}"}% + }% + \@nameuse{nxu@#1@@reset}% + \@nameuse{nxu@\@nameuse{nxu@#1@@name}@\@nameuse{nxu@\@nameuse{nxu@#1@@name}}true}% + }% + }% + \kv@define@key{nxu@value}{default}{% + \def\nxu@@default{##1}% + }% + \kvsetkeys{nxu@value}{#2}% + \@namedef{nxu@\@nameuse{nxu@#1@@name}}{}% + \kv@set@family@handler{nxu@choice}{% + \ifx\nxu@@default\@empty + \def\nxu@@default{##1}% + \fi + \expandafter\newif\csname ifnxu@\@nameuse{nxu@#1@@name}@##1\endcsname + \expandafter\g@addto@macro\csname nxu@#1@@reset\endcsname{% + \@nameuse{nxu@\@nameuse{nxu@#1@@name}@##1false}% + }% + }% + \kvsetkeys@expandafter{nxu@choice}{\nxu@@choices}% + \expandafter\let\csname nxu@\@nameuse{nxu@#1@@name}\endcsname\nxu@@default + \expandafter\ifx\csname nxu@\@nameuse{nxu@#1@@name}\endcsname\@empty\else + \@nameuse{nxu@#1@@check}% + \fi + \kv@define@key{nxu}{#1}{% + \@namedef{nxu@\@nameuse{nxu@#1@@name}}{##1}% + \@nameuse{nxu@#1@@check}% + \@nameuse{nxu@#1@@code}% + }% +} +\newcommand\nxu@option@hook[2]{% + \expandafter\g@addto@macro\csname nxu@#1@@code\endcsname{#2}% +} +\nxu@define@key{ + thesis-type = { + name = thesis@type, + choices = { + thesis, + proposal, + }, + default = thesis, + }, + degree = { + choices = { + master, + doctor, + }, + default = master, + }, + degree-type = { + choices = { + academic, + professional, + }, + name = degree@type, + }, + main-language = { + name = main@language, + choices = { + chinese, + english, + }, + }, + language = { + choices = { + chinese, + english, + }, + }, + system = { + choices = { + auto, + mac, + unix, + windows, + }, + default = auto, + }, + fontset = { + choices = { + auto, + windows, + mac, + ubuntu, + fandol, + none, + }, + default = auto, + }, + font = { + choices = { + auto, + times, + termes, + stix, + xits, + libertinus, + newcm, + lm, + newtx, + none, + }, + default = auto, + }, + cjk-font = { + name = cjk@font, + choices = { + auto, + windows, + windows-local, + mac, + mac-word, + noto, + fandol, + none, + }, + default = auto, + }, + windows-font-dir = { + name = windows@font@dir, + default = {.}, + }, + math-font = { + name = math@font, + choices = { + auto, + stix, + xits, + libertinus, + newcm, + lm, + newtx, + none, + }, + default = auto, + }, + math-style = { + name = math@style, + choices = { + GB, + ISO, + TeX, + }, + }, + uppercase-greek = { + name = uppercase@greek, + choices = { + italic, + upright, + }, + }, + less-than-or-equal = { + name = leq, + choices = { + slanted, + horizontal, + }, + }, + integral = { + choices = { + upright, + slanted, + }, + }, + integral-limits = { + name = integral@limits, + choices = { + true, + false, + }, + }, + partial = { + choices = { + upright, + italic, + }, + }, + math-ellipsis = { + name = math@ellipsis, + choices = { + centered, + lower, + AMS, + }, + }, + real-part = { + name = real@part, + choices = { + roman, + fraktur, + }, + }, + output = { + choices = { + print, + electronic, + }, + default = print, + }, +} +\newif\ifnxu@degree@graduate +\newcommand\nxu@set@graduate{% + \nxu@degree@graduatefalse + \ifnxu@degree@doctor + \nxu@degree@graduatetrue + \fi + \ifnxu@degree@master + \nxu@degree@graduatetrue + \fi +} +\nxu@set@graduate +\nxu@option@hook{degree}{% + \nxu@set@graduate +} +\DeclareBoolOption[false]{openright} +\DeclareComplementaryOption{openany}{openright} +\DeclareBoolOption[true]{raggedbottom} +\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}} +\ProcessKeyvalOptions* +\ifnxu@openright + \PassOptionsToClass{openright}{book} +\else + \PassOptionsToClass{openany}{book} +\fi +\PassOptionsToPackage{no-math}{fontspec} +\LoadClass[a4paper,UTF8,zihao=-4,scheme=plain,fontset=none]{ctexbook}[2017/04/01] +\RequirePackage{etoolbox} +\RequirePackage{filehook} +\RequirePackage{xparse} +\RequirePackage{geometry}% +\RequirePackage{fancyhdr} +\RequirePackage{titletoc} +\RequirePackage{notoccite} +\RequirePackage{amsmath} +\RequirePackage{graphicx} +\RequirePackage[labelformat=simple]{subcaption} +\RequirePackage{pdfpages} +\includepdfset{fitpaper=true} +\AtEndPreamble{ + \ifx\tikzifexternalizing\@undefined\else + \tikzifexternalizing{ + \renewcommand*\includepdf[2][]{} + }{} + \fi +} +\RequirePackage[shortlabels]{enumitem} +\RequirePackage{environ} +\ifnxu@raggedbottom + \RequirePackage[bottom,perpage,hang]{footmisc} + \raggedbottom +\else + \RequirePackage[perpage,hang]{footmisc} +\fi +\ifXeTeX + \RequirePackage{xeCJKfntef} +\else + \RequirePackage{ulem} +\fi +\RequirePackage{array} +\RequirePackage{booktabs} +\RequirePackage{url} +\AtEndPreamble{ + \@ifpackageloaded{biblatex}{}{ + \@ifpackageloaded{apacite}{}{ + \RequirePackage{natbib} + } + } +} +\AtEndOfPackageFile*{natbib}{ + \@ifpackageloaded{apacite}{}{ + \RequirePackage{bibunits} + } +} +\newcommand\nxu@package@conflict[2]{% + \AtEndOfPackageFile*{#1}{% + \AtBeginOfPackageFile*{#2}{% + \nxu@error{The "#2" package is incompatible with "#1"}% + }% + }% +} +\nxu@package@conflict{biblatex}{bibunits} +\nxu@package@conflict{biblatex}{chapterbib} +\nxu@package@conflict{biblatex}{cite} +\nxu@package@conflict{biblatex}{multibib} +\nxu@package@conflict{biblatex}{natbib} + +\nxu@package@conflict{bibunits}{biblatex} +\nxu@package@conflict{bibunits}{chapterbib} +\nxu@package@conflict{bibunits}{multibib} + +\nxu@package@conflict{unicode-math}{amscd} +\nxu@package@conflict{unicode-math}{amsfonts} +\nxu@package@conflict{unicode-math}{amssymb} +\nxu@package@conflict{unicode-math}{bbm} +\nxu@package@conflict{unicode-math}{bm} +\nxu@package@conflict{unicode-math}{eucal} +\nxu@package@conflict{unicode-math}{eufrak} +\nxu@package@conflict{unicode-math}{mathrsfs} +\nxu@package@conflict{unicode-math}{newtxmath} +\nxu@package@conflict{unicode-math}{upgreek} + +\nxu@package@conflict{natbib}{biblatex} +\nxu@package@conflict{natbib}{cite} + +\nxu@package@conflict{newtxmath}{amsfonts} +\nxu@package@conflict{newtxmath}{amssymb} +\nxu@package@conflict{newtxmath}{unicode-math} +\nxu@package@conflict{newtxmath}{upgreek} +\AtBeginOfPackageFile*{amsthm}{ + \@ifpackageloaded{newtxmath}{ + \nxu@error{The "amsthm" package should be loaded before setting "newtxmath"} + }{} +}% +\geometry{ + paper = a4paper, % 210 * 297mm + marginparwidth = 2cm, + marginparsep = 0.5cm, + asymmetric, % 使奇偶页边距一致 +} +\newcommand\nxu@set@geometry{% + \geometry{ + top = 3.0cm, + bottom = 2.5cm, + left = 3.0cm, + right = 2.5cm, + headheight = 2.8cm, + headsep = 0.0cm, + footskip = 0.8cm, + }% +} +\nxu@set@geometry +\nxu@option@hook{degree}{\nxu@set@geometry} +\nxu@option@hook{output}{\nxu@set@geometry} +\nxusetup{main-language=\nxu@language}% +\let\nxu@main@language\nxu@language +\nxu@option@hook{language}{% + \ifx\@begindocumenthook\@undefined\else + \nxusetup{main-language=\nxu@language}% + \let\nxu@main@language\nxu@language + \fi +} +\newcommand\nxu@reset@main@language{% + \nxusetup{language = \nxu@main@language}% + \let\nxu@language\nxu@main@language +} +\newcommand\nxu@set@chapter@names{% + \ifnxu@main@language@chinese + \def\nxu@comments@name{指导教师评语}% + \def\bibname{参考文献}% + \def\appendixname{附录}% + \def\indexname{索引}% + \def\nxu@resolution@name{答辩委员会决议书}% + \def\listfigurename{插图清单}% + \def\listtablename{附表清单}% + \def\nxu@list@figure@table@name{插图和附表清单}% + \def\nxu@list@algorithm@name{算法清单}% + \def\listequationname{公式清单}% + \def\nxu@acknowledgements@name{致\quad 谢}% + \def\contentsname{目\quad 录}% + \def\nxu@denotation@name{符号和缩略语说明}% + \ifnxu@degree@master + \def\nxu@resume@name{个人简介及攻读硕士学位期间论文发表情况}% + \else % degree = doctor + \def\nxu@resume@name{个人简介及攻读博士学位期间论文发表情况}% + \fi + \else + \ifnxu@main@language@english + \def\nxu@comments@name{Comments from Thesis Supervisor}% + \def\nxu@resolution@name{Resolution of Thesis Defense Committee}% + \def\indexname{Index}% + \def\contentsname{Table of Contents}% + \def\listfigurename{List of Figures}% + \def\listtablename{List of Tables}% + \def\nxu@list@figure@table@name{List of Figures and Tables}% + \def\nxu@list@algorithm@name{List of Algorithms}% + \def\listequationname{List of Equations}% + \def\nxu@denotation@name{List of Symbols and Acronyms}% + \def\bibname{References}% + \def\appendixname{Appendix}% + \def\nxu@acknowledgements@name{Acknowledgements}% + \def\nxu@resume@name{Resume}% + \fi + \fi +} +\nxu@set@chapter@names +\nxu@option@hook{degree}{\nxu@set@chapter@names} +\nxu@option@hook{main-language}{\nxu@set@chapter@names} +\newcommand\nxu@set@names{% + \ifnxu@language@chinese + \ctexset{ + figurename = 图, + tablename = 表, + }% + \def\nxu@algorithm@name{算法}% + \def\nxu@equation@name{公式}% + \def\nxu@assumption@name{假设}% + \def\nxu@definition@name{定义}% + \def\nxu@proposition@name{命题}% + \def\nxu@lemma@name{引理}% + \def\nxu@theorem@name{定理}% + \def\nxu@axiom@name{公理}% + \def\nxu@corollary@name{推论}% + \def\nxu@exercise@name{练习}% + \def\nxu@example@name{例}% + \def\nxu@remark@name{注释}% + \def\nxu@problem@name{问题}% + \def\nxu@conjecture@name{猜想}% + \def\nxu@proof@name{证明}% + \def\nxu@theorem@separator{:}% + \else + \ifnxu@language@english + \ctexset{ + figurename = {Figure}, + tablename = {Table}, + }% + \def\nxu@algorithm@name{Algorithm}% + \def\nxu@equation@name{Equation}% + \def\nxu@assumption@name{Assumption}% + \def\nxu@definition@name{Definition}% + \def\nxu@proposition@name{Proposition}% + \def\nxu@lemma@name{Lemma}% + \def\nxu@theorem@name{Theorem}% + \def\nxu@axiom@name{Axiom}% + \def\nxu@corollary@name{Corollary}% + \def\nxu@exercise@name{Exercise}% + \def\nxu@example@name{Example}% + \def\nxu@remark@name{Remark}% + \def\nxu@problem@name{Problem}% + \def\nxu@conjecture@name{Conjecture}% + \def\nxu@proof@name{Proof}% + \def\nxu@theorem@separator{: }% + \fi + \fi +} +\nxu@set@names +\nxu@option@hook{language}{\nxu@set@names} +\ifLuaTeX + % ctex 将带圈数字 U+2460–U+24FF 归入字符范围 3(ALchar),这里改回范围 6(JAchar) + \ltjdefcharrange{3}{% + "2000-"243F, "2500-"27BF, "2900-"29FF, "2B00-"2BFF} + \ltjdefcharrange{6}{% + "2460-"24FF, "2E80-"2EFF, "3000-"30FF, "3190-"319F, "31F0-"4DBF, + "4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF, + "1B000-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF} +\else + \ifXeTeX + \xeCJKDeclareCharClass{CJK}{"2460 -> "2473} + \xeCJKDeclareCharClass{CJK}{"2605} + \fi +\fi +\newcommand\nxu@set@punctuations{% + \ifnxu@language@chinese + \ifLuaTeX + \ltjsetparameter{jacharrange={+9}} + \else + \ifXeTeX + \xeCJKDeclareCharClass{FullLeft}{"2018, "201C}% + \xeCJKDeclareCharClass{FullRight}{ + "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, + }% + \fi + \fi + \else + \ifnxu@language@english + \ifLuaTeX + \ltjsetparameter{jacharrange={-9}} + \else + \ifXeTeX + \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}% + \xeCJKDeclareCharClass{HalfRight}{ + "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, + }% + \fi + \fi + \fi + \fi +} +\nxu@set@punctuations +\nxu@option@hook{language}{\nxu@set@punctuations} +\renewcommand\normalsize{% + \@setfontsize\normalsize{10.5bp}{18bp}% + \abovedisplayskip 6bp% + \abovedisplayshortskip 6bp% + \belowdisplayshortskip 6bp% + \belowdisplayskip \abovedisplayskip +} +\normalsize +\ifx\MakeRobust\@undefined \else + \MakeRobust\normalsize +\fi +\def\nxu@def@fontsize#1#2{% + \expandafter\newcommand\csname #1\endcsname[1][1.3]{% + \fontsize{#2}{##1\dimexpr #2}\selectfont}} +\nxu@def@fontsize{chuhao}{42bp} +\nxu@def@fontsize{xiaochu}{36bp} +\nxu@def@fontsize{yihao}{26bp} +\nxu@def@fontsize{xiaoyi}{24bp} +\nxu@def@fontsize{erhao}{22bp} +\nxu@def@fontsize{xiaoer}{18bp} +\nxu@def@fontsize{sanhao}{16bp} +\nxu@def@fontsize{xiaosan}{15bp} +\nxu@def@fontsize{sihao}{14bp} +\nxu@def@fontsize{xiaosi}{12bp} +\nxu@def@fontsize{wuhao}{10.5bp} +\nxu@def@fontsize{xiaowu}{9bp} +\nxu@def@fontsize{liuhao}{7.5bp} +\nxu@def@fontsize{xiaoliu}{6.5bp} +\nxu@def@fontsize{qihao}{5.5bp} +\nxu@def@fontsize{bahao}{5bp} +\ifnxu@system@auto + \IfFileExists{/System/Library/Fonts/Menlo.ttc}{ + \nxusetup{system = mac} + }{ + \IfFileExists{/dev/null}{ + \IfFileExists{null:}{ + \nxusetup{system = windows} + }{ + \nxusetup{system = unix} + } + }{ + \nxusetup{system = windows} + } + } + \nxu@debug{Detected system: \nxu@system} +\fi +\newcommand\nxu@mac@word@font@dir{% + /Applications/Microsoft Word.app/Contents/Resources/DFonts% +} +\ifnxu@fontset@auto + \ifnxu@system@windows + \nxusetup{fontset = windows} + \else + \IfFontExistsTF{SimSun}{ + \nxusetup{fontset = windows} + }{ + \IfFileExists{\nxu@windows@font@dir/Simsun.ttc}{ + \nxusetup{fontset = windows, cjk-font = windows-local} + }{ + \IfFileExists{\nxu@mac@word@font@dir/Simsun.ttc}{ + \nxusetup{fontset = windows, cjk-font = mac-word} + }{ + \ifnxu@system@mac + \nxusetup{fontset = mac} + \else + \IfFontExistsTF{Noto Serif CJK SC}{ + \nxusetup{fontset = ubuntu} + }{ + \nxusetup{fontset = fandol} + } + \fi + } + } + } + \fi + \nxu@debug{Detected fontset: \nxu@fontset} +\fi +\newcommand\nxu@set@font{% + \@nameuse{nxu@set@font@\nxu@font}% +} +\nxu@option@hook{font}{\nxu@set@font} +\newcommand\nxu@set@font@auto{% + \ifnxu@font@auto + \ifnxu@fontset@windows + \nxusetup{font=times}% + \else + \ifnxu@fontset@mac + \nxusetup{font=times}% + \else + \nxusetup{font=termes}% + \fi + \fi + \fi +} +\nxu@option@hook{math-font}{\g@addto@macro\nxu@setup@hook{\nxu@set@font@auto}} +\AtBeginOfPackageFile*{siunitx}{\nxu@set@font@auto} +\AtEndPreamble{\nxu@set@font@auto} +\newcommand\nxu@set@font@times{% + \setmainfont{Times New Roman}% + \setsansfont{Times New Roman}% + %\setsansfont{Arial}% + \ifnxu@fontset@mac + \setmonofont{Menlo}[Scale = MatchLowercase]% + \else + \setmonofont{Courier New}[Scale = MatchLowercase]% + \fi +} +\newcommand\nxu@set@font@termes{% + \setmainfont{texgyretermes}[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + ]% + \nxu@set@texgyre@sans@mono +} +\newcommand\nxu@set@texgyre@sans@mono{% + \setsansfont{texgyreheros}[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + ]% + \setmonofont{texgyrecursor}[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Scale = MatchLowercase, + Ligatures = CommonOff, + ]% +} +\let\nxu@font@family@stix\@empty +\newcommand\nxu@set@stix@names{% + \ifx\nxu@font@family@stix\@empty + \IfFontExistsTF{STIXTwoText-Regular.otf}{% + \gdef\nxu@font@family@stix{STIXTwoText}% + \gdef\nxu@font@name@stix@math{STIXTwoMath-Regular}% + }{% + \gdef\nxu@font@family@stix{STIX2Text}% + \gdef\nxu@font@name@stix@math{STIX2Math}% + }% + \fi +} +\newcommand\nxu@set@font@stix{% + \nxu@set@stix@names + \setmainfont{\nxu@font@family@stix}[ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic, + ]% + \nxu@set@texgyre@sans@mono +} +\let\nxu@font@family@xits\@empty +\newcommand\nxu@set@xits@names{% + \ifx\nxu@font@family@xits\@empty + \IfFontExistsTF{XITSMath-Regular.otf}{% + \gdef\nxu@font@family@xits{XITS}% + \gdef\nxu@font@style@xits@rm{Regular}% + \gdef\nxu@font@style@xits@bf{Bold}% + \gdef\nxu@font@style@xits@it{Italic}% + \gdef\nxu@font@style@xits@bfit{BoldItalic}% + \gdef\nxu@font@name@xits@math{XITSMath-Regular}% + }{% + \gdef\nxu@font@family@xits{xits}% + \gdef\nxu@font@style@xits@rm{regular}% + \gdef\nxu@font@style@xits@bf{bold}% + \gdef\nxu@font@style@xits@it{italic}% + \gdef\nxu@font@style@xits@bfit{bolditalic}% + \gdef\nxu@font@name@xits@math{xits-math}% + }% + \fi +} +\newcommand\nxu@set@font@xits{% + \nxu@set@xits@names + \setmainfont{\nxu@font@family@xits}[ + Extension = .otf, + UprightFont = *-\nxu@font@style@xits@rm, + BoldFont = *-\nxu@font@style@xits@bf, + ItalicFont = *-\nxu@font@style@xits@it, + BoldItalicFont = *-\nxu@font@style@xits@bfit, + ]% + \nxu@set@texgyre@sans@mono +} +\let\nxu@font@family@libertinus\@empty +\newcommand\nxu@set@libertinus@names{% + \ifx\nxu@font@family@libertinus\@empty + \IfFontExistsTF{LibertinusSerif-Regular.otf}{% + \gdef\nxu@font@family@libertinus@serif{LibertinusSerif}% + \gdef\nxu@font@family@libertinus@sans{LibertinusSans}% + \gdef\nxu@font@name@libertinus@math{LibertinusMath-Regular}% + \gdef\nxu@font@style@libertinus@rm{Regular}% + \gdef\nxu@font@style@libertinus@bf{Bold}% + \gdef\nxu@font@style@libertinus@it{Italic}% + \gdef\nxu@font@style@libertinus@bfit{BoldItalic}% + }{% + \gdef\nxu@font@family@libertinus@serif{libertinusserif}% + \gdef\nxu@font@family@libertinus@sans{libertinussans}% + \gdef\nxu@font@name@libertinus@math{libertinusmath-regular}% + \gdef\nxu@font@style@libertinus@rm{regular}% + \gdef\nxu@font@style@libertinus@bf{bold}% + \gdef\nxu@font@style@libertinus@it{italic}% + \gdef\nxu@font@style@libertinus@bfit{bolditalic}% + }% + \fi +} +\newcommand\nxu@set@font@libertinus{% + \nxu@set@libertinus@names + \setmainfont{\nxu@font@family@libertinus@serif}[ + Extension = .otf, + UprightFont = *-\nxu@font@style@libertinus@rm, + BoldFont = *-\nxu@font@style@libertinus@bf, + ItalicFont = *-\nxu@font@style@libertinus@it, + BoldItalicFont = *-\nxu@font@style@libertinus@bfit, + ]% + \setsansfont{\nxu@font@family@libertinus@sans}[ + Extension = .otf, + UprightFont = *-\nxu@font@style@libertinus@rm, + BoldFont = *-\nxu@font@style@libertinus@bf, + ItalicFont = *-\nxu@font@style@libertinus@it, + ]% + \setmonofont{lmmonolt10}[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-oblique, + BoldItalicFont = *-boldoblique, + ]% +} +\newcommand\nxu@set@font@newcm{% + \setmainfont{NewCM10}[ + Extension = .otf, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookItalic, + BoldItalicFont = *-BoldItalic, + ]% + \setsansfont{NewCMSans10}[ + Extension = .otf, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookOblique, + BoldItalicFont = *-BoldOblique, + ]% + \setmonofont{NewCMMono10}[ + Extension = .otf, + UprightFont = *-Book, + ItalicFont = *-BookItalic, + BoldFont = *-Bold, + BoldItalicFont = *-BoldOblique, + ]% +} +\newcommand\nxu@set@font@lm{% + \setmainfont{lmroman10}[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + ]% + \setsansfont{lmsans10}[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-oblique, + BoldItalicFont = *-boldoblique, + ]% + \setmonofont{lmmonolt10}[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-oblique, + BoldItalicFont = *-boldoblique, + ]% +} +\newcommand\nxu@set@font@newtx{% + \RequirePackage{newtxtext}% +} +\ifnxu@cjk@font@auto + \ifnxu@fontset@mac + \nxusetup{cjk-font = mac} + \else + \ifnxu@fontset@windows + \IfFontExistsTF{SimSun}{ + \nxusetup{cjk-font = windows} + }{ + \IfFileExists{\nxu@windows@font@dir/Simsun.ttc}{ + \nxusetup{cjk-font = windows-local} + }{ + \IfFileExists{\nxu@mac@word@font@dir/Simsun.ttc}{ + \nxusetup{cjk-font = mac-word} + }{ + \nxu@error{Cannot find "SimSun" font} + } + } + } + \else + \ifnxu@fontset@ubuntu + \nxusetup{cjk-font = noto} + \else + \nxusetup{cjk-font = fandol} + \fi + \fi + \fi + \nxu@debug{Detected CJK font: \nxu@cjk@font} +\fi +\newcommand\nxu@set@cjk@font@windows{% + \setCJKmainfont{SimSun}[ + AutoFakeBold = 3, + ItalicFont = KaiTi, + ]% + \setCJKsansfont{SimHei}[AutoFakeBold = 3]% + \setCJKmonofont{FangSong}% + \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold = 3]% + \setCJKfamilyfont{zhhei}{SimHei}[AutoFakeBold = 3]% + \setCJKfamilyfont{zhkai}{KaiTi}% + \setCJKfamilyfont{zhfs}{FangSong}% +} +\@namedef{nxu@set@cjk@font@windows-local}{% + \IfFileExists{\nxu@windows@font@dir/Kaiti.ttf}{ + \setCJKmainfont{SimSun}[% + Path = \nxu@windows@font@dir/, + Extension = .ttc, + AutoFakeBold = 3, + ItalicFont = Kaiti, + ItalicFeatures = {Extension = .ttf}, + ]% + \setCJKmonofont{Fangsong}[ + Path = \nxu@windows@font@dir/, + Extension = .ttf, + ]% + \setCJKfamilyfont{zhkai}{Kaiti}[ + Path = \nxu@windows@font@dir/, + Extension = .ttf, + ]% + \setCJKfamilyfont{zhfs}{Fangsong}[ + Path = \nxu@windows@font@dir/, + Extension = .ttf, + ]% + }{ + \setCJKmainfont{SimSun}[% + Path = \nxu@windows@font@dir/, + Extension = .ttc, + AutoFakeBold = 3, + ItalicFont = Simkai, + ItalicFeatures = {Extension = .ttf}, + ]% + \setCJKmonofont{Simfang}[ + Path = \nxu@windows@font@dir/, + Extension = .ttf, + ]% + \setCJKfamilyfont{zhkai}{Simkai}[ + Path = \nxu@windows@font@dir/, + Extension = .ttf, + ]% + \setCJKfamilyfont{zhfs}{Simfang}[ + Path = \nxu@windows@font@dir/, + Extension = .ttf, + ]% + } + \setCJKsansfont{SimHei}[% + Path = \nxu@windows@font@dir/, + Extension = .ttf, + AutoFakeBold = 3, + ]% + \setCJKfamilyfont{zhsong}{SimSun}[% + Path = \nxu@windows@font@dir/, + Extension = .ttc, + AutoFakeBold = 3, + ]% + \setCJKfamilyfont{zhhei}{SimHei}[% + Path = \nxu@windows@font@dir/, + Extension = .ttf, + AutoFakeBold = 3, + ]% +} +\@namedef{nxu@set@cjk@font@mac-word}{% + \let\nxu@windows@font@dir\nxu@mac@word@font@dir + \@nameuse{nxu@set@cjk@font@windows-local}% +} +\newcommand\nxu@set@cjk@font@mac{% + \defaultCJKfontfeatures{}% + \setCJKmainfont{Songti SC}[ + UprightFont = * Light, + BoldFont = * Bold, + ItalicFont = Kaiti SC Regular, + BoldItalicFont = Kaiti SC Bold, + ]% + \setCJKsansfont{Heiti SC}[ + UprightFont = * Light, + BoldFont = * Medium, + ]% + \setCJKmonofont{STFangsong} + \setCJKfamilyfont{zhsong}{Songti SC}[ + UprightFont = * Light, + BoldFont = * Bold, + ]% + \setCJKfamilyfont{zhhei}{Heiti SC}[ + UprightFont = * Light, + BoldFont = * Medium, + ]% + \setCJKfamilyfont{zhfs}{STFangsong}% + \setCJKfamilyfont{zhkai}{Kaiti SC}[ + UprightFont = * Regular, + BoldFont = * Bold, + ]% + \setCJKfamilyfont{zhli}{Baoli SC}% + \setCJKfamilyfont{zhyuan}{Yuanyi SC}[ + UprightFont = * Light, + BoldFont = * Bold, + ]% +} +\newcommand\nxu@set@cjk@font@noto{% + \defaultCJKfontfeatures{}% + \setCJKmainfont{Noto Serif CJK SC}[ + UprightFont = * Light, + BoldFont = * Bold, + ItalicFont = FandolKai-Regular, + ItalicFeatures = {Extension = .otf}, + Script = CJK, + ]% + \setCJKsansfont{Noto Sans CJK SC}[ + BoldFont = * Medium, + Script = CJK, + ]% + \setCJKmonofont{Noto Sans Mono CJK SC}[ + Script = CJK, + ]% + \setCJKfamilyfont{zhsong}{Noto Serif CJK SC}[ + UprightFont = * Light, + UprightFont = * Bold, + Script = CJK, + ]% + \setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[ + BoldFont = * Medium, + Script = CJK, + ]% + \setCJKfamilyfont{zhfs}{FandolFang}[ + Extension = .otf, + UprightFont = *-Regular, + ]% + \setCJKfamilyfont{zhkai}{FandolKai}[ + Extension = .otf, + UprightFont = *-Regular, + ]% +} +\newcommand\nxu@set@cjk@font@fandol{% + \defaultCJKfontfeatures{}% + \setCJKmainfont{FandolSong}[ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = FandolKai-Regular, + ItalicFeatures = {Extension = .otf}, + ]% + \setCJKsansfont{FandolHei}[ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ]% + \setCJKmonofont{FandolFang}[ + Extension = .otf, + UprightFont = *-Regular, + ]% + \setCJKfamilyfont{zhsong}{FandolSong}[ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ]% + \setCJKfamilyfont{zhhei}{FandolHei}[ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ]% + \setCJKfamilyfont{zhfs}{FandolFang}[ + Extension = .otf, + UprightFont = *-Regular, + ]% + \setCJKfamilyfont{zhkai}{FandolKai}[ + Extension = .otf, + UprightFont = *-Regular, + ]% +} +\ifnxu@cjk@font@none\else + \providecommand\songti{\CJKfamily{zhsong}} + \providecommand\heiti{\CJKfamily{zhhei}} + \providecommand\fangsong{\CJKfamily{zhfs}} + \providecommand\kaishu{\CJKfamily{zhkai}} +\fi +\newcommand\nxu@set@cjk@font{% + \@nameuse{nxu@set@cjk@font@\nxu@cjk@font}% +} +\nxu@set@cjk@font +\nxu@option@hook{cjk-font}{\nxu@set@cjk@font} +\newcommand\nxu@set@math@style{% + \ifnxu@math@style@TeX + \nxusetup{ + uppercase-greek = upright, + less-than-or-equal = horizontal, + integral = slanted, + integral-limits = false, + partial = italic, + math-ellipsis = AMS, + real-part = fraktur, + }% + \else + \nxusetup{ + uppercase-greek = italic, + integral = upright, + partial = upright, + real-part = roman, + }% + \ifnxu@math@style@ISO + \nxusetup{ + less-than-or-equal = horizontal, + integral-limits = true, + math-ellipsis = lower, + }% + \else + \ifnxu@math@style@GB + \nxusetup{ + less-than-or-equal = slanted, + integral-limits = false, + math-ellipsis = centered, + }% + \fi + \fi + \fi +} +\ifnxu@main@language@chinese + \nxusetup{math-style=GB}% +\else + \nxusetup{math-style=TeX}% +\fi +\nxu@set@math@style +\nxu@option@hook{math-style}{\nxu@set@math@style} +\nxu@option@hook{main-language}{% + \ifnxu@main@language@chinese + \nxusetup{math-style=GB}% + \else + \nxusetup{math-style=TeX}% + \fi +} +\newcommand\nxu@set@unimath@leq{% + \ifnxu@leq@horizontal + \ifx\@begindocumenthook\@undefined + \let\le\nxu@save@leq + \let\ge\nxu@save@geq + \let\leq\nxu@save@leq + \let\geq\nxu@save@geq + \else + \AtBeginDocument{% + \let\le\nxu@save@leq + \let\ge\nxu@save@geq + \let\leq\nxu@save@leq + \let\geq\nxu@save@geq + }% + \fi + \else + \ifnxu@leq@slanted + \ifx\@begindocumenthook\@undefined + \let\le\leqslant + \let\ge\geqslant + \let\leq\leqslant + \let\geq\geqslant + \else + \AtBeginDocument{% + \let\le\leqslant + \let\ge\geqslant + \let\leq\leqslant + \let\geq\geqslant + }% + \fi + \fi + \fi +} +\newcommand\nxu@set@unimath@integral@limits{% + \ifnxu@integral@limits@true + \removenolimits{% + \int\iint\iiint\iiiint\oint\oiint\oiiint + \intclockwise\varointclockwise\ointctrclockwise\sumint + \intbar\intBar\fint\cirfnint\awint\rppolint + \scpolint\npolint\pointint\sqint\intlarhk\intx + \intcap\intcup\upint\lowint + }% + \else + \addnolimits{% + \int\iint\iiint\iiiint\oint\oiint\oiiint + \intclockwise\varointclockwise\ointctrclockwise\sumint + \intbar\intBar\fint\cirfnint\awint\rppolint + \scpolint\npolint\pointint\sqint\intlarhk\intx + \intcap\intcup\upint\lowint + }% + \fi +} +\newcommand\nxu@set@unimath@ellipsis{% + \ifnxu@math@ellipsis@centered + \DeclareRobustCommand\mathellipsis{\mathinner{\unicodecdots}}% + \else + \DeclareRobustCommand\mathellipsis{\mathinner{\unicodeellipsis}}% + \fi +} +\newcommand\nxu@set@unimath@real@part{% + \ifnxu@real@part@roman + \AtBeginDocument{% + \def\Re{\operatorname{Re}}% + \def\Im{\operatorname{Im}}% + }% + \else + \AtBeginDocument{% + \let\Re\nxu@save@Re + \let\Im\nxu@save@Im + }% + \fi +} +\newcommand\nxu@set@unimath@style{% + \ifnxu@uppercase@greek@upright + \unimathsetup{math-style = TeX}% + \else + \ifnxu@uppercase@greek@italic + \unimathsetup{math-style = ISO}% + \fi + \fi + \ifnxu@math@style@TeX + \unimathsetup{bold-style = TeX}% + \else + \unimathsetup{bold-style = ISO}% + \fi + \nxu@set@unimath@leq + \nxu@set@unimath@integral@limits + \ifnxu@partial@upright + \unimathsetup{partial = upright}% + \else + \ifnxu@partial@italic + \unimathsetup{partial = italic}% + \fi + \fi + \nxu@set@unimath@ellipsis + \nxu@set@unimath@real@part +} +\newcommand\nxu@qed{\rule{1ex}{1ex}} +\newcommand\nxu@load@unimath{% + \@ifpackageloaded{unicode-math}{}{% + \RequirePackage{unicode-math}% + \AtBeginDocument{% + \let\nxu@save@leq\leq + \let\nxu@save@geq\geq + \let\nxu@save@Re\Re + \let\nxu@save@Im\Im + }% + \DeclareRobustCommand\bm[1]{{\symbfit{##1}}}% + \DeclareRobustCommand\boldsymbol[1]{{\symbfit{##1}}}% + \newcommand\square{\mdlgwhtsquare}% + \newcommand\blacksquare{\mdlgblksquare}% + \AtBeginDocument{% + \renewcommand\checkmark{\ensuremath{\symbol{"2713}}}% + }% + \renewcommand\nxu@qed{\ensuremath{\QED}}% + }% +} +\newcommand\nxu@set@math@font@stix{% + \nxu@set@stix@names + \setmathfont{\nxu@font@name@stix@math}[ + Extension = .otf, + Scale = MatchLowercase, + StylisticSet = \nxu@xits@integral@stylistic@set, + ]% + \setmathfont{\nxu@font@name@stix@math}[ + Extension = .otf, + Scale = MatchLowercase, + StylisticSet = 1, + range = {scr,bfscr}, + ]% +} +\newcommand\nxu@xits@integral@stylistic@set{% + \ifnxu@integral@upright + 8% + \fi +} +\newcommand\nxu@set@math@font@xits{% + \nxu@set@xits@names + \setmathfont{\nxu@font@name@xits@math}[ + Extension = .otf, + StylisticSet = \nxu@xits@integral@stylistic@set, + ]% + \setmathfont{\nxu@font@name@xits@math}[ + Extension = .otf, + StylisticSet = 1, + range = {cal,bfcal}, + ]% +} +\newcommand\nxu@libertinus@integral@stylistic@set{% + \ifnxu@integral@slanted + 8% + \fi +} +\newcommand\nxu@set@math@font@libertinus{% + \nxu@set@libertinus@names + \setmathfont{\nxu@font@name@libertinus@math}[ + Extension = .otf, + StylisticSet = \nxu@libertinus@integral@stylistic@set, + ]% +} +\newcommand\nxu@newcm@integral@stylistic@set{% + \ifnxu@integral@upright + 2% + \fi +} +\newcommand\nxu@set@math@font@newcm{% + \setmathfont{NewCMMath-Book}[ + Extension = .otf, + StylisticSet = \nxu@newcm@integral@stylistic@set, + ]% + \setmathfont{NewCMMath-Book}[ + Extension = .otf, + StylisticSet = 1, + range = {scr,bfscr}, + ]% + \setmathrm{NewCM10}[ + Extension = .otf, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookItalic, + BoldItalicFont = *-BoldItalic, + ]% + \setmathsf{NewCMSans10}[ + Extension = .otf, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookOblique, + BoldItalicFont = *-BoldOblique, + ]% + \setmathtt{NewCMMono10}[ + Extension = .otf, + UprightFont = *-Book, + ItalicFont = *-BookItalic, + BoldFont = *-Bold, + BoldItalicFont = *-BoldOblique, + ]% +} +\newcommand\nxu@set@math@font@lm{% + \setmathfont{latinmodern-math}[Extension=.otf]% + \setmathrm{lmroman10}[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + ]% + \setmathsf{lmsans10}[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-oblique, + BoldItalicFont = *-boldoblique, + ]% + \setmathtt{lmmonolt10}[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-oblique, + BoldItalicFont = *-boldoblique, + ]% +} +\newcommand\nxu@set@math@font@newtx{% + \ifnxu@font@newtx\else + \let\nxu@save@encodingdefault\encodingdefault + \let\nxu@save@rmdefault\rmdefault + \let\nxu@save@sfdefault\sfdefault + \let\nxu@save@ttdefault\ttdefault + \RequirePackage[T1]{fontenc}% + \renewcommand{\rmdefault}{ntxtlf}% + \renewcommand{\sfdefault}{qhv}% + \renewcommand{\ttdefault}{ntxtt}% + \fi + \ifnxu@uppercase@greek@italic + \PassOptionsToPackage{slantedGreek}{newtxmath}% + \fi + \ifnxu@integral@upright + \PassOptionsToPackage{upint}{newtxmath}% + \fi + \RequirePackage{newtxmath} + \let\nxu@save@leq\leq + \let\nxu@save@geq\geq + \ifnxu@leq@slanted + \let\le\leqslant + \let\ge\geqslant + \let\leq\leqslant + \let\geq\geqslant + \fi + \ifnxu@integral@limits@true + \let\ilimits@\displaylimits + \fi + \let\nxu@save@partial\partial + \ifnxu@partial@upright + \let\partial\uppartial + \fi + \ifnxu@math@ellipsis@centered + \DeclareRobustCommand\mathellipsis{\mathinner{\cdotp\cdotp\cdotp}}% + \else + \DeclareRobustCommand\mathellipsis{\mathinner{\ldotp\ldotp\ldotp}}% + \fi + \let\nxu@save@Re\Re + \let\nxu@save@Im\Im + \ifnxu@real@part@roman + \def\Re{\operatorname{Re}}% + \def\Im{\operatorname{Im}}% + \fi + \RequirePackage{bm}% + \ifnxu@font@newtx\else + \let\encodingdefault\nxu@save@encodingdefault + \let\rmdefault\nxu@save@rmdefault + \let\sfdefault\nxu@save@sfdefault + \let\ttdefault\nxu@save@ttdefault + \fi + \DeclareRobustCommand\symup[1]{{\mathrm{##1}}}% + \DeclareRobustCommand\symbf[1]{{\bm{##1}}}% + \DeclareRobustCommand\symbfsf[1]{{\bm{\mathsf{##1}}}}% + \let\increment\upDelta% + \renewcommand\nxu@qed{\openbox}% +} +\newcommand\nxu@set@math@font{% + \ifnxu@math@font@none\else + \ifnxu@math@font@newtx + \nxu@set@math@font@newtx + \else + \nxu@load@unimath + \nxu@set@unimath@style + \@nameuse{nxu@set@math@font@\nxu@math@font}% + \fi + \fi +} +\nxu@option@hook{math-font}{\g@addto@macro\nxu@setup@hook{\nxu@set@math@font}} +\newcommand\nxu@set@math@font@auto{% + \ifnxu@math@font@auto + \nxusetup{math-font=xits}% + \fi +} +\AtBeginOfPackageFile*{siunitx}{\nxu@set@math@font@auto} +\AtEndPreamble{\nxu@set@math@font@auto} +\def\cleardoublepage{% + \clearpage + \if@twoside + \ifnxu@output@print + \ifodd\c@page + \else + \thispagestyle{empty}% + \hbox{}% + \newpage + \if@twocolumn + \hbox{}\newpage + \fi + \fi + \fi + \fi +} +\renewcommand\frontmatter{% + \cleardoublepage + \@mainmatterfalse + \pagenumbering{Roman}% + \pagestyle{plain} +} +\renewcommand\mainmatter{% + \cleardoublepage + \@mainmattertrue + \pagenumbering{arabic}% + \pagestyle{fancy} +} +\newif\ifnxu@backmatter +\renewcommand\backmatter{% + \if@openright + \cleardoublepage + \else + \clearpage + \fi + \@mainmatterfalse + \nxu@backmattertrue + \nxusetup{toc-depth = 0}% +} +\pagestyle{fancy} +\fancypagestyle{fancy}{% + \fancyhf{}% + \renewcommand\footrulewidth{0pt}% + \renewcommand\headrulewidth{0.5bp}% +% \newcommand{\makeheadrule}{% +% \makebox[0pt][l]{\rule[0.6\baselineskip]{\headwidth}{3.0bp}}% +% \rule[0.52\baselineskip]{\headwidth}{0.8bp}} + \renewcommand{\headrule}{% + {\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi + \makebox[0pt][l]{\rule[0.6\baselineskip]{\headwidth}{3.0bp}}% + \rule[0.52\baselineskip]{\headwidth}{0.8bp} + %\hrule\@height 3.0bp \@width\headwidth\vskip1pt%上面线为1pt粗 + %\hrule\@height 0.8bp \@width\headwidth%下面0.5pt粗 + %\vskip-2\headrulewidth\vskip-1pt + }} + \fancyhead[L]{% + \xiaowu + \ifnxu@main@language@chinese + \ifnxu@degree@doctor + 宁夏大学博士学位论文 + \else + \ifnxu@degree@master + 宁夏大学硕士学位论文 + \fi + \fi + \else + \MakeUppercase{\leftmark}% + \fi + }% + \fancyhead[R]{% + \xiaowu + \ifnxu@main@language@chinese + \leftmark + \else + \MakeUppercase{\leftmark}% + \fi + }% + \fancyfoot[LE,RO]{\xiaowu -- {\thepage} --}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markboth{% + \CTEXifname{% + \CTEXthechapter + \ifnxu@main@language@chinese + \quad + \else + \space + \fi + }{}##1% + }{}% + }% + \let\sectionmark\@gobble +} +\fancypagestyle{plain}{% + \fancyhf{}% + \renewcommand\footrulewidth{0pt}% + \renewcommand\headrulewidth{0pt}% + \renewcommand\headrule{}% + \fancyfoot[C]{ + \xiaowu + \thepage + } + %\fancyhead{}% +} +\pagestyle{fancy} +\def\ps@chapter{} +\ctexset{chapter/pagestyle = chapter} +\ctexset{% + punct=quanjiao, +} +% \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi% + % \hrule\@height 1.0pt \@width\headwidth\vskip1pt%上面线为1pt粗 + % \hrule\@height 0.5pt\@width\headwidth%下面0.5pt粗 + % \vskip-2\headrulewidth\vskip-1pt}%两条线的距离1pt + +\newcommand\nxu@set@indent{% + \ifnxu@main@language@chinese + \ctexset{autoindent=2}% + \else + \ctexset{autoindent=0.74cm}% + \fi +} +\nxu@set@indent +\nxu@option@hook{degree}{\nxu@set@indent} +\nxu@option@hook{main-language}{\nxu@set@indent} +\urlstyle{same} +\g@addto@macro\UrlBreaks{% + \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9% + \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M + \do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z + \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m + \do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z +} +\Urlmuskip=0mu plus 0.1mu +\partopsep=\z@skip +\def\@listi{\leftmargin\leftmargini + \parsep \z@skip + \topsep \z@skip + \itemsep\z@skip} +\let\@listI\@listi +\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep \z@skip + \parsep \z@skip + \itemsep \z@skip} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep \z@skip + \parsep \z@skip + \partopsep \z@skip + \itemsep \z@skip} +\setlist{nosep} +\interfootnotelinepenalty=10000 +\newcommand\nxu@circled[1]{% + \ifnum#1 >10\relax + \nxu@warning{% + Too many footnotes in this page. + Keep footnote less than 10% + }% + \fi + {\symbol{\the\numexpr#1+"245F\relax}}% +} +\renewcommand{\thefootnote}{\nxu@circled{\c@footnote}} +\renewcommand{\thempfootnote}{\nxu@circled{\c@mpfootnote}} +\def\footnoterule{\vskip-3\p@\hrule\@width0.3\textwidth\@height0.4\p@\vskip2.6\p@} +\footnotemargin=13.5bp +\long\def\@makefntext#1{% + \begingroup + % 序号取消上标 + \def\@makefnmark{\hbox{\normalfont\@thefnmark}}% + \xiaowu + \ifFN@hangfoot + \bgroup + \setbox\@tempboxa\hbox{% + \ifdim\footnotemargin>\z@ + \hb@xt@\footnotemargin{\@makefnmark\hss}% + \else + \@makefnmark + \fi + }% + \leftmargin\wd\@tempboxa + \rightmargin\z@ + \linewidth \columnwidth + \advance \linewidth -\leftmargin + \parshape \@ne \leftmargin \linewidth + % \footnotesize + \xiaowu + \@setpar{{\@@par}}% + \leavevmode + \llap{\box\@tempboxa}% + \parskip\hangfootparskip\relax + \parindent\hangfootparindent\relax + \else + \parindent1em% + \noindent + \ifdim\footnotemargin>\z@ + \hb@xt@ \footnotemargin{\hss\@makefnmark}% + \else + \ifdim\footnotemargin=\z@ + \llap{\@makefnmark}% + \else + \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}}% + \fi + \fi + \fi + \footnotelayout#1% + \ifFN@hangfoot + \par\egroup + \fi + \endgroup +} +\allowdisplaybreaks[4] +\newcommand\nxu@put@parentheses[1]{% + \ifnxu@language@chinese + \unskip + (#1)% + \else + (#1)% + \fi +} +\def\tagform@#1{\maketag@@@{\nxu@put@parentheses{\ignorespaces#1\unskip\@@italiccorr}}} +\renewcommand{\eqref}[1]{% + \textup{% + \normalfont\nxu@put@parentheses{% + \ignorespaces\ref{#1}\unskip\@@italiccorr + }% + }% +} +\def\fps@figure{htbp} +\def\fps@table{htbp} +\setlength{\floatsep}{12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength{\textfloatsep}{12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength{\intextsep}{12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength{\@fptop}{0bp \@plus1.0fil} +\setlength{\@fpsep}{12bp \@plus2.0fil} +\setlength{\@fpbot}{0bp \@plus1.0fil} +\patchcmd{\@addtocurcol}% + {\vskip \intextsep}% + {\edef\save@first@penalty{\the\lastpenalty}\unpenalty + \ifnum \lastpenalty = \@M % hopefully the OR penalty + \unpenalty + \else + \penalty \save@first@penalty \relax % put it back + \fi + \ifnum\outputpenalty <-\@Mii + \addvspace\intextsep + \vskip\parskip + \else + \addvspace\intextsep + \fi}% + {}{\nxu@patch@error{\@addtocurcol}} +\patchcmd{\@addtocurcol}% + {\vskip\intextsep \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi}% + {\ifnum\outputpenalty <-\@Mii + \aftergroup\vskip\aftergroup\intextsep + \aftergroup\nointerlineskip + \else + \vskip\intextsep + \fi}% + {}{\nxu@patch@error{\@addtocurcol}} +\patchcmd{\@getpen}{\@M}{\@Mi} + {}{\nxu@patch@error{\@getpen}} +\renewcommand{\textfraction}{0.15} +\renewcommand{\topfraction}{0.85} +\renewcommand{\bottomfraction}{0.65} +\renewcommand{\floatpagefraction}{0.60} +\nxu@define@key{ + figure-number-separator = { + name = figure@number@separator, + default = {.}, + }, + table-number-separator = { + name = table@number@separator, + default = {.}, + }, + equation-number-separator = { + name = equation@number@separator, + default = {.}, + }, + number-separator = { + name = number@separator, + default = {.}, + }, +} +\renewcommand\thefigure{% + \xiaowu + \ifnum\c@chapter>\z@ + \thechapter + \nxu@figure@number@separator + \fi + \@arabic\c@figure +} +\renewcommand\thetable{% + \xiaowu + \ifnum\c@chapter>\z@ + \thechapter + \nxu@table@number@separator + \fi + \@arabic\c@table +} +\renewcommand\theequation{% + \xiaowu + \ifnum\c@chapter>\z@ + \thechapter + \nxu@equation@number@separator + \fi + \@arabic\c@equation +} +\newcommand\nxu@set@number@separator{% + \let\nxu@figure@number@separator\nxu@number@separator + \let\nxu@table@number@separator\nxu@number@separator + \let\nxu@equation@number@separator\nxu@number@separator +} +\nxu@option@hook{number-separator}{\nxu@set@number@separator} +\DeclareCaptionFont{nxu}{% + \ifnxu@language@chinese + \fontsize{9bp}{13.5bp}\heiti + \else + \fontsize{9bp}{12.65bp}\selectfont + \fi +} +\captionsetup{ + font = nxu, + labelsep = quad, + skip = 6bp, + figureposition = bottom, + tableposition = top, +} +\captionsetup[sub]{font=nxu} +\renewcommand{\thesubfigure}{(\alph{subfigure})} +\renewcommand{\thesubtable}{(\alph{subtable})} +\newcommand\nxu@set@table@font{ + \ifnxu@language@chinese + \def\nxu@table@font{% + \fontsize{9bp}{13.5bp}\selectfont + \renewcommand\arraystretch{1.42}% + }% + \else + \def\nxu@table@font{% + \fontsize{9bp}{13.5bp}\selectfont + \renewcommand\arraystretch{1.47}% + }% + \fi +} +\nxu@set@table@font +\nxu@option@hook{language}{\nxu@set@table@font} +\patchcmd\@floatboxreset{% + \normalsize +}{% + \nxu@table@font +}{}{\nxu@patch@error{\@floatboxreset}} +\AtEndOfPackageFile*{longtable}{ + \AtBeginEnvironment{longtable}{% + \nxu@table@font + } +} +\heavyrulewidth=1.5bp +\lightrulewidth=1bp +\AtEndOfPackageFile*{threeparttable}{ + \g@addto@macro\TPT@defaults{\wuhao} +} +\newcommand{\nxu@abstract@name}{摘要} +\newcommand{\nxu@abstract@name@en}{Abstract} +\ctexset{% + chapter = { + nameformat = {}, + numberformat = {}, + titleformat = {}, + fixskip = true, + afterindent = true, + lofskip = 0pt, + lotskip = 0pt, + }, + section = { + afterindent = true, + }, + subsection = { + afterindent = true, + }, + subsubsection = { + afterindent = true, + }, + paragraph/afterindent = true, + subparagraph/afterindent = true, +} +\newcommand\nxu@set@section@format{% + \ctexset{% + chapter = { + beforeskip = 16bp, + afterskip = 20bp, + %number = \thechapter, + }, + section = { + beforeskip = 18bp, + afterskip = 14bp, + }, + subsection = { + beforeskip = 12bp, + afterskip = 12bp, + }, + subsubsection = { + beforeskip = 12bp, + afterskip = 12bp, + }, + }% + \ifnxu@main@language@chinese + \ctexset{% + chapter = { + format = \centering\sffamily\sanhao, + nameformat = {}, + titleformat = {}, + name = {第,章}, + aftername = \quad, + number = \zhnumber{\thechapter} + }, + section = { + format = \sffamily\fontsize{14bp}{14bp}\selectfont, + aftername = \quad, + }, + subsection = { + format = \sffamily\fontsize{12bp}{12bp}\selectfont, + aftername = \quad, + }, + subsubsection = { + format = \sffamily\fontsize{12bp}{20bp}\selectfont, + aftername = \quad, + }, + }% + \else + \ctexset{% + chapter = { + format = \centering\sffamily\bfseries\fontsize{16bp}{20bp}\selectfont, + nameformat = \MakeUppercase, + titleformat = \MakeUppercase, + name = \chaptername\space, + aftername = \space, + }, + section = { + format = \sffamily\bfseries\fontsize{14bp}{20bp}\selectfont, + aftername = \space, + }, + subsection = { + format = \sffamily\bfseries\fontsize{13bp}{20bp}\selectfont, + aftername = \space, + }, + subsubsection = { + format = \sffamily\bfseries\fontsize{12bp}{20bp}\selectfont, + aftername = \space, + }, + }% + \fi +} +\nxu@set@section@format +\nxu@option@hook{degree}{\nxu@set@section@format} +\nxu@option@hook{main-language}{\nxu@set@section@format} +\newcommand\nxu@english@number[1]{% + \expandafter\ifcase\csname c@#1\endcsname + Zero\or + One\or + Two\or + Three\or + Four\or + Five\or + Six\or + Seven\or + Eight\or + Nine\or + Ten\or + Eleven\or + Twelve\or + Thirteen\or + Fourteen\or + Fifteen\or + Sixteen\or + Seventeen\or + Eighteen\or + Nineteen\or + Twenty\or + \nxu@error{You are genius}% + \fi +} +\newcommand\nxu@pdfbookmark[2]{} +\newcommand\nxu@phantomsection{} +\NewDocumentCommand\nxu@chapter{s o m o}{% + \IfBooleanF{#1}{% + \nxu@error{You have to use the star form: \string\nxu@chapter*}% + }% + \if@openright\cleardoublepage\else\clearpage\fi% + \IfValueTF{#2}{% + \ifthenelse{\equal{#2}{}}{% + \nxu@pdfbookmark{0}{#3}% + }{% + \nxu@phantomsection + \addcontentsline{toc}{chapter}{#2}% + }% + }{% + \nxu@phantomsection + \addcontentsline{toc}{chapter}{#3}% + }% + \chapter*{#3}% + \IfValueTF{#4}{% + \ifthenelse{\equal{#4}{}}{% + \@mkboth{}{}% + }{% + \@mkboth{#4}{#4}% + }% + }{% + \@mkboth{#3}{#3}% + }% +} +\setcounter{secnumdepth}{3} +\setcounter{tocdepth}{2} +\renewcommand\tableofcontents{% + \ifnxu@degree@graduate + \nxu@chapter*[]{\erhao \contentsname}% + \else + \nxu@chapter*[]{\contentsname}% + \fi + \@starttoc{toc}% +} +\nxu@define@key{ + toc-chapter-style = { + name = toc@chapter@style, + choices = { + arial, + times, + }, + default = arial, + }, +} +\newcommand\nxu@leaders{\titlerule*[5bp]{$\cdot$}} +\newcommand\nxu@set@toc@format{% + \contentsmargin{\z@}% + \ifnxu@main@language@chinese + \titlecontents{chapter} + [\z@]{\mdseries \songti \sihao} + {\contentspush{\thecontentslabel\quad}}{} + {\nxu@leaders{\xiaosi \thecontentspage}}[\vspace{0.2cm}]% + \titlecontents{section} + [2em]{\songti \xiaosi} + {\contentspush{\thecontentslabel\quad}}{} + {\nxu@leaders\thecontentspage}[\vspace{0.2cm}]% + \titlecontents{subsection} + [4em]{\songti \xiaosi} + {\contentspush{\thecontentslabel\quad}}{} + {\nxu@leaders\thecontentspage}[\vspace{0.2cm}]% + \else + \titlecontents{chapter} + [\z@]{\heiti} + {\contentspush{\MakeUppercase{\thecontentslabel}\space}\MakeUppercase}{\MakeUppercase} + {\rmfamily\nxu@leaders\thecontentspage}% + \titlecontents{section} + [1em]{} + {\contentspush{\thecontentslabel\space}}{} + {\nxu@leaders\thecontentspage}% + \titlecontents{subsection} + [2em]{} + {\contentspush{\thecontentslabel\space}}{} + {\nxu@leaders\thecontentspage}% + \fi +} +\nxu@set@toc@format +\nxu@option@hook{degree}{\nxu@set@toc@format} +\nxu@option@hook{main-language}{\nxu@set@toc@format} +\nxu@define@key{ + secret-level = { + name = secret@level, + }, + secret-year = { + name = secret@year, + }, + title = { + default = {标题}, + }, + title* = { + default = {Title}, + name = title@en, + }, + author = { + default = {姓名}, + }, + student-id = { + name = student@id, + }, + supervisor = { + default = {导师姓名}, + }, + associate-supervisor = { + name = associate@supervisor, + }, + co-supervisor = { + name = co@supervisor, + }, + % Reserved for compatibility + joint-supervisor = { + name = co@supervisor, + }, + field = { + name = field, + }, + code = { + name = code, + }, + degree-category = { + default = {工学博士}, + name = degree@category, + }, + % 为了向后兼容 + degree-name = { + name = degree@category, + }, +} +\nxu@option@hook{degree-name}{% + \nxu@warning{`degree-name' is deprecated. Use `degree-category' instead.} +} +\nxu@option@hook{degree-name*}{% + \nxu@warning{`degree-name*' is deprecated. Use `degree-category*' instead.} +} +\nxu@define@key{ + department = { + default = {土木与水利工程学院}, + }, + discipline = { + % default = {土木与水利工程学院}, + }, +} +\nxu@option@hook{discipline}{% + \ifnxu@degree@type@professional + \nxu@warning{`discipline' for professional degree is deprecated. Use `professional-field' instead.} + \let\nxu@professional@field\nxu@discipline + \let\nxu@discipline\@empty + \fi +} +\nxu@option@hook{discipline*}{% + \ifnxu@degree@type@professional + \nxu@warning{`discipline*' for professional degree is deprecated. Use `professional-field*' instead.} + \let\nxu@professional@field@en\nxu@discipline@en + \let\nxu@discipline@en\@empty + \fi +} +\nxu@define@key{ + professional-field = { + name = professional@field, + }, + engineering-field = { + name = engineering@field, + }, + date = { + default = {\the\year-\two@digits{\month}-\two@digits{\day}}, + }, + clc, + udc, + id, + discipline-level-1 = { + default = {一级学科名称}, + name = discipline@level@i, + }, + discipline-level-2 = { + default = {二级学科名称}, + name = discipline@level@ii, + }, + start-date = { + name = start@date, + default = {\the\year-\two@digits{\month}-\two@digits{\day}}, + }, + end-date = { + name = end@date, + default = {\the\year-\two@digits{\month}-\two@digits{\day}}, + }, + include-spine = { + name = include@spine, + choices = { + false, + true, + }, + default = false, + }, +} +\newcommand\nxu@format@date[2]{% + \edef\nxu@@date{#2}% + \def\nxu@@process@date##1-##2-##3\@nil{% + #1{##1}{##2}{##3}% + }% + \expandafter\nxu@@process@date\nxu@@date\@nil +} +\newcommand\nxu@date@zh@digit[3]{#1 年 \number#2 月 \number#3 日} +\newcommand\nxu@date@zh@digit@short[3]{#1 年 \number#2 月} +\newcommand\nxu@date@zh@short[3]{\zhdigits{#1}年\zhnumber{#2}月} +\newcommand\nxu@date@month[1]{% + \ifcase\number#1\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December% + \fi +} +\newcommand\nxu@date@en@short[3]{\nxu@date@month{#2}, #1} +\newcommand\nxu@underline[2][6em]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt} +\newcommand\nxu@uline[2][6em]{\uline{\hb@xt@ #1{\hss#2\hss}}} +\newcommand\nxu@fixed@box[2]{% + \begingroup + \ifLuaTeX + \ltjsetparameter{kanjiskip = {0pt plus 2filll minus 1filll}}% + \else + \renewcommand\CJKglue{\hspace{0pt plus 2filll minus 1filll}}% + \fi + \makebox[#1][l]{#2}% + \endgroup +} +\newbox\nxu@stretch@box +\newcommand\nxu@stretch[2]{% + \sbox\nxu@stretch@box{#2}% + \ifdim \wd\nxu@stretch@box < #1\relax + \begingroup + \ifLuaTeX + \ltjsetparameter{kanjiskip = {0pt plus 2filll}}% + \else + \renewcommand\CJKglue{\hspace{0pt plus 2filll}}% + \fi + \makebox[#1][l]{#2}% + \endgroup + \else + \box\nxu@stretch@box + \fi +} +\newbox\nxu@pad@box +\newcommand\nxu@pad[2]{% + \sbox\nxu@pad@box{#2}% + \ifdim \wd\nxu@pad@box < #1\relax + \makebox[#1]{\box\nxu@pad@box}% + \else + \box\nxu@pad@box + \fi +} +\newcounter{nxu@csl@count} +\newcommand\nxu@name@title@process[1]{% + \ifcase\c@nxu@csl@count % == 0 + \gdef\nxu@@name{#1}% + \or % == 1 + \gdef\nxu@@title{#1}% + \fi + \stepcounter{nxu@csl@count}% +} +\newcommand\nxu@name@title@format[2]{% + %\nxu@pad{3em}{\nxu@stretch{3em}{#1}}% + \makebox[4.5em][l]{\box\nxu@pad@box{#1}} + %#2 + \nxu@stretch{1em}{#2}% +} +\newcommand\nxu@name@title[1]{% + \setcounter{nxu@csl@count}{0}% + \gdef\nxu@@name{}% + \gdef\nxu@@title{}% + \expandafter\comma@parse\expandafter{#1}{\nxu@name@title@process}% + \nxu@name@title@format{\nxu@@name}{\nxu@@title}% +} +\renewcommand\maketitle{% + \cleardoublepage + \pagenumbering{Alph}% + \nxu@pdfbookmark{-1}{\nxu@title}% + \nxu@titlepage + \ifnxu@include@spine@true + \spine + \fi + \clearpage +} +\newcommand\nxu@titlepage{% + \nxusetup{language = chinese}% + \nxu@titlepage@thesis + \nxu@reset@main@language +} +\newcommand\nxu@titlepage@thesis{% + \thispagestyle{empty}% + % \null\vskip 8.1pt% + \begingroup + \centering + \begingroup + \fontsize{10.5bp}{10.5bp}\selectfont + \nxu@titlepage@topinfo\par + \endgroup + \vskip 1.7cm% + \nxu@titlepage@name + \vskip 0.68cm + \nxu@title@page@degree@category\par + \vskip 0.6cm + \begingroup + \sffamily\fontsize{22bp}{30bp}\selectfont + \nxu@title\par + \endgroup + \vskip 8pt + \begingroup + \fontsize{16bp}{24bp}\selectfont + \nxu@title@en\par + \endgroup + \vskip 24.1pt% + \vfill + \begingroup + \fontsize{14bp}{21bp}\songti + \nxu@titlepage@info\par + \endgroup + \vskip 62pt% + \fi + \endgroup + \clearpage + \restoregeometry +} +\newcommand\nxu@set@student@id{% + \ifnxu@thesis@type@proposal + \ifx\nxu@student@id\@empty + \nxusetup{student-id=2000310000}% + \fi + \fi +} +\nxu@set@student@id +\nxu@option@hook{thesis-type}{\nxu@set@student@id} +\newcommand\nxu@titlepage@name{ + \begin{center} + \includegraphics[width=10.3cm]{nxu-name.pdf} + \end{center} +} +\newcommand\nxu@titlepage@topinfo{ + \nxu@titlepage@topinfo@tabular{3em}{4em}{1em}{ + \nxu@topinfo@iteml{分类号}{\nxu@clc} + \nxu@topinfo@iteml{密级}{\nxu@secret@level} + }{ + \nxu@topinfo@itemr{单位代码}{\nxu@code} + \nxu@topinfo@itemr{学号}{\nxu@student@id} + }\par +} +\newcommand\nxu@titlepage@topinfo@tabular[5]{% + \def\nxu@topinfo@iteml##1##2{% + \nxu@pad{#1}{\nxu@fixed@box{#1}{##1}}% + \nxu@pad{#3}{:}% + \makebox[6em][l]{ ##2 }\\[3bp] + }% + \def\nxu@topinfo@itemr##1##2{% + \nxu@pad{#2}{\nxu@fixed@box{#2}{##1}}% + \nxu@pad{#3}{:}% + \makebox[6em][l]{ ##2 }\\[3bp] + }% + \begin{tabular}{l}% + #4% + \end{tabular}% + \hfill + \begin{tabular}{l}% + #5% + \end{tabular}% +} +\newcommand\nxu@title@page@degree@category{% + \begingroup + \fontsize{18bp}{22bp}\selectfont + \ifLuaTeX + \fontspec{\CJK@family}% + \ltjsetparameter{kanjiskip = {1bp}}% + \else + \CJKfamily+{}% + \renewcommand\CJKglue{\hspace{1bp}}% + \fi + \ifnxu@thesis@type@thesis + \ifnxu@degree@type@academic + \ifnxu@degree@master + 硕士学位论文 + \else + \ifnxu@degree@doctor + 博士学位论文 + \fi + \fi + \else + \ifnxu@degree@type@professional + 专业学位论文 + \fi + \fi + \par + \endgroup +} +\newcommand\nxu@titlepage@info{% + \nxu@titlepage@info@tabular{0.0cm}{4.54cm}{4.44cm}{0.60cm}{% + \nxu@info@item{学位申请人}{}{\nxu@author}% + \nxu@info@item{指导教师}{\nxu@name@title}{\nxu@supervisor}% + \nxu@info@item{合作指导教师}{\nxu@name@title}{\nxu@co@supervisor}% + \ifnxu@degree@type@academic + \nxu@info@item{申请学位门类级别}{}{\nxu@degree@category}% + \nxu@info@item{专业名称}{}{\nxu@discipline}% + \else + \nxu@info@item{申请学位类别}{}{\nxu@degree@category}% + \nxu@info@item{专业领域名称}{}{\nxu@discipline}% + \fi + \nxu@info@item{研究方向}{}{\nxu@field}% + \nxu@info@item{所在学院}{}{\nxu@department}% + \nxu@info@item{论文完成日期}{}{\sihao\nxu@format@date{\nxu@date@zh@digit}{\nxu@date}}% + }\par +} +\newcommand\nxu@titlepage@info@tabular[5]{% + \def\nxu@info@item##1##2##3{% + \ifx##3\@empty\else + \nxu@pad{#2}{\nxu@fixed@box{#3}{##1}}% + \nxu@pad{#4}{:}% + \uline{ \nxu@pad{14em}{\hfill ##2{##3} }}\\[7bp] + \fi + }% + \hspace{#1}% + \begin{tabular}{l}% + \renewcommand\arraystretch{1}% + #5% + \end{tabular}% +} +\newcommand\copyrightpage[1][]{% + \cleardoublepage + \def\nxu@@tmp{#1} + \ifx\nxu@@tmp\@empty + \nxusetup{language=chinese}% + \thispagestyle{empty}% + \nxu@copyright@page@graduate + \nxu@reset@main@language + \else + \thispagestyle{empty}% + \nxu@pdfbookmark{0}{关于学位论文使用授权的说明}% + \nxu@phantomsection + \kv@define@key{nxu@copyright}{file}{\includepdf{\kv@value}}% + \kv@set@family@handler{nxu@copyright}{% + \ifx\kv@value\relax + \includepdf{\kv@key}% + \else + \kv@handled@false + \fi + }% + \kvsetkeys{nxu@copyright}{#1}% + \fi +} +\newcommand{\nxu@authorization@frontdate}{% + 日\hspace{2em} 期:} +\newcommand\nxu@copyright@page@graduate{% + \null\vskip 30bp% + \begingroup + \begin{center} + \sffamily\fontsize{22bp}{30bp}\selectfont + \nxu@stretch{5.4cm}{独创性声明} + \end{center} + \endgroup + \vskip 12bp% + \begingroup + \fontsize{12bp}{20bp}\selectfont + 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得宁夏大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。\par + \endgroup + \vskip 30bp + \begingroup + \fontsize{12bp}{20bp}\selectfont + 研究生签名:\hspace{12em}时间:\hspace{4em}年\hspace{2em}月\hspace{2em}日\par + \endgroup + \vskip 4.00cm + \begingroup + \begin{center} + \sffamily\fontsize{22bp}{30bp}\selectfont + 关于论文使用授权的说明 + \end{center} + \endgroup + \vskip 12bp% + \begingroup + \fontsize{12bp}{20bp}\selectfont + 本人完全了解宁夏大学有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件和磁盘,允许论文被查阅和借阅,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。同意宁夏大学可以用不同方式在不同媒体上发表、传播学位论文的全部或部分内容。\par + \textbf{(保密的学位论文在解密后应遵守此协议)}\par + \endgroup + \vskip 30bp + \begingroup + \fontsize{12bp}{20bp}\selectfont + 研究生签名:\hspace{12em}时间:\hspace{4em}年\hspace{2em}月\hspace{2em}日\par + \vskip 28bp + 导师签名:\hspace{13em}时间:\hspace{4em}年\hspace{2em}月\hspace{2em}日\par + \endgroup +} +\nxu@define@key{ + keywords, + keywords* = { + name = keywords@en, + }, +} +\newcommand\nxu@clist@use[2]{% + \def\nxu@@tmp{}% + \def\nxu@clist@processor##1{% + \ifx\nxu@@tmp\@empty + \def\nxu@@tmp{#2}% + \else + #2% + \fi + ##1% + }% + \expandafter\comma@parse\expandafter{#1}{\nxu@clist@processor}% +} +\newenvironment{abstract}{% + \thispagestyle{empty} + \nxusetup{language = chinese}% + \ifnxu@degree@graduate + \begingroup + \ifnxu@main@language@english + \ctexset{% + chapter/format = \centering\sffamily\fontsize{16bp}{20bp}\selectfont, + }% + \fi + \nxu@chapter*{\nxu@abstract@name}% + \endgroup + \else + \nxu@chapter*[]{\nxu@abstract@name}% + \fi +}{% + \par + %\null\par + \noindent + \textbf{关键词:}% + \nxu@clist@use{\nxu@keywords}{,}% + \gdef\nxu@keywords{}% + \nxu@reset@main@language % switch back to main language +} +\newenvironment{abstract*}{% + \nxusetup{language = english}% + \ifnxu@degree@graduate + \nxu@chapter*[]{\bfseries \nxu@abstract@name@en}% + \addcontentsline{toc}{chapter}{\nxu@abstract@name@en}% + \else + \nxu@chapter*[]{\nxu@abstract@name@en}% + \fi +}{% + \par + %\null\par + \noindent + \textbf{Keywords:}\space + \nxu@clist@use{\nxu@keywords@en}{, }% + \ifnxu@degree@graduate + \vspace*{\stretch{1}}% + \fi + \nxu@reset@main@language % switch back to main language +} +\newenvironment{denotation}[1][2.5cm]{% + \nxu@chapter*{\nxu@denotation@name}% + \vskip-30bp\xiaosi[1.6]\begin{nxu@denotation}[labelwidth=#1] +}{% + \end{nxu@denotation} +} +\newlist{nxu@denotation}{description}{1} +\setlist[nxu@denotation]{% + nosep, + font=\normalfont, + align=left, + leftmargin=!, % sum of the following 3 lengths + labelindent=0pt, + labelwidth=2.5cm, + labelsep*=0.5cm, + itemindent=0pt, +} +\newcommand{\nxu@signature}{签\hspace{1em}名:} +\newcommand{\nxu@backdate}{日\hspace{1em}期:} +\newenvironment{acknowledgements}{% + \@mainmatterfalse + \nxu@end@appendix@ref@section + \nxu@chapter*{\nxu@acknowledgements@name}% +}{% +} +\let\acknowledgement\acknowledgements +\let\endacknowledgement\endacknowledgements +\def\nxu@listof#1{% #1: float type + \setcounter{tocdepth}{2} % restore tocdepth in case being modified + \@ifstar + {\nxu@chapter*[]{\csname list#1name\endcsname}\@starttoc{\csname ext@#1\endcsname}} + {\nxu@chapter*{\csname list#1name\endcsname}\@starttoc{\csname ext@#1\endcsname}}% +} +\renewcommand\listoffigures{% + \nxu@listof{figure}% +} +\titlecontents{figure} + [\z@]{} + {\contentspush{\figurename~\thecontentslabel\quad}}{} + {\nobreak\nxu@leaders\nobreak\hfil\thecontentspage} +\renewcommand\listoftables{% + \nxu@listof{table}% +} +\titlecontents{table} + [\z@]{} + {\contentspush{\tablename~\thecontentslabel\quad}}{} + {\nxu@leaders\thecontentspage} +\newcommand\listoffiguresandtables{% + \nxu@chapter*{\nxu@list@figure@table@name}% + \@starttoc{lof}% + \par + \null\par + \@starttoc{lot}% +} +\def\ext@equation{loe} +\def\equcaption#1{% + \addcontentsline{\ext@equation}{equation}% + {\protect\numberline{#1}}} +\newcommand\listofequations{\nxu@listof{equation}} +\titlecontents{equation} + [0pt]{\addvspace{6bp}} + {\nxu@equation@name~\thecontentslabel}{} + {\nobreak\nxu@leaders\nobreak\thecontentspage} +\contentsuse{equation}{loe} +\nxu@define@key{ + cite-style = { + name = cite@style, + choices = { + super, + inline, + author-year, + } + } +} +\def\bibliographystyle#1{% + \gdef\bu@bibstyle{#1}% + \ifx\@begindocumenthook\@undefined\else + \expandafter\AtBeginDocument + \fi + {\if@filesw + \immediate\write\@auxout{\string\bibstyle{#1}}% + \immediate\write\@auxout{\string\gdef\string\bu@bibstyle{#1}}% + \fi}% +} +\def\bibliography#1{% + \if@filesw + \immediate\write\@auxout{\string\bibdata{\zap@space#1 \@empty}}% + \immediate\write\@auxout{\string\gdef\string\bu@bibdata{#1}}% + \fi + \gdef\bu@bibdata{#1}% + \@input@{\jobname.bbl}} +\PassOptionsToPackage{compress}{natbib} +\AtEndOfPackageFile*{natbib}{ + \DeclareRobustCommand\inlinecite{\@inlinecite} + \def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup} + \let\onlinecite\inlinecite + \newcommand\bibstyle@super{% + \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} + \newcommand\bibstyle@inline{% + \bibpunct{[}{]}{,}{n}{,}{,}} + \@namedef{bibstyle@author-year}{% + \bibpunct{(}{)}{;}{a}{,}{,}} + \nxu@option@hook{cite-style}{\@nameuse{bibstyle@\nxu@cite@style}} + \@namedef{bibstyle@nxuthesis-numeric}{\citestyle{super}} + \@namedef{bibstyle@nxuthesis-author-year}{\citestyle{author-year}} + \@namedef{bibstyle@cell}{\citestyle{author-year}} + %\@namedef{bibstyle@nxuthesis-bachelor}{\citestyle{super}} + \renewcommand\NAT@citesuper[3]{% + \ifNAT@swa + \if*#2*\else + #2\NAT@spacechar + \fi + % \unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}% + % \if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup} + \unskip\kern\p@ + \textsuperscript{% + \NAT@@open#1\NAT@@close + \if*#3*\else#3\fi + }% + \kern\p@ + \else + #1% + \fi + \endgroup + } + \renewcommand\NAT@citenum[3]{% + \ifNAT@swa + \NAT@@open + \if*#2*\else + #2\NAT@spacechar + \fi + % #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close + #1\NAT@@close + \if*#3*\else + \textsuperscript{#3}% + \fi + \else + #1% + \fi + \endgroup + } + \def\NAT@citexnum[#1][#2]#3{% + \NAT@reset@parser + \NAT@sort@cites{#3}% + \NAT@reset@citea + \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty + \@for\@citeb:=\NAT@cite@list\do + {\@safe@activestrue + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \@safe@activesfalse + \@ifundefined{b@\@citeb\@extra@b@citeb}{% + {\reset@font\bfseries?} + \NAT@citeundefined\PackageWarning{natbib}% + {Citation `\@citeb' on page \thepage \space undefined}}% + {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm + \NAT@parse{\@citeb}% + \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% + \let\NAT@name=\NAT@all@names + \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% + \fi + \ifNAT@full\let\NAT@nm\NAT@all@names\else + \let\NAT@nm\NAT@name\fi + \ifNAT@swa + \@ifnum{\NAT@ctype>\@ne}{% + \@citea + \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}% + }{% + \@ifnum{\NAT@cmprs>\z@}{% + \NAT@ifcat@num\NAT@num + {\let\NAT@nm=\NAT@num}% + {\def\NAT@nm{-2}}% + \NAT@ifcat@num\NAT@last@num + {\@tempcnta=\NAT@last@num\relax}% + {\@tempcnta\m@ne}% + \@ifnum{\NAT@nm=\@tempcnta}{% + \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}% + }{% + \advance\@tempcnta by\@ne + \@ifnum{\NAT@nm=\@tempcnta}{% + % \ifx\NAT@last@yr\relax + % \def@NAT@last@yr{\@citea}% + % \else + % \def@NAT@last@yr{--\NAT@penalty}% + % \fi + \def@NAT@last@yr{-\NAT@penalty}% + }{% + \NAT@last@yr@mbox + }% + }% + }{% + \@tempswatrue + \@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}% + \if@tempswa\NAT@citea@mbox\fi + }% + }% + \NAT@def@citea + \else + \ifcase\NAT@ctype + \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else + \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}% + \fi + \if*#1*\else#1\NAT@spacechar\fi + \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}% + \NAT@def@citea@box + \or + \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}% + \or + \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}% + \or + \NAT@hyper@citea@space\NAT@alias + \fi + \fi + }% + }% + \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}% + \ifNAT@swa\else + % \@ifnum{\NAT@ctype=\z@}{% + % \if*#2*\else\NAT@cmt#2\fi + % }{}% + \NAT@mbox{\NAT@@close}% + \@ifnum{\NAT@ctype=\z@}{% + \if*#2*\else + \textsuperscript{#2}% + \fi + }{}% + \NAT@super@kern + \fi + }{#1}{#2}% + }% + \renewcommand\NAT@cite% + [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi + % #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup} + #1\NAT@@close\if*#3*\else\textsuperscript{#3}\fi\else#1\fi\endgroup} + \def\NAT@citex% + [#1][#2]#3{% + \NAT@reset@parser + \NAT@sort@cites{#3}% + \NAT@reset@citea + \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty + \@for\@citeb:=\NAT@cite@list\do + {\@safe@activestrue + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \@safe@activesfalse + \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea% + {\reset@font\bfseries ?}\NAT@citeundefined + \PackageWarning{natbib}% + {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}% + {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year + \NAT@parse{\@citeb}% + \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% + \let\NAT@name=\NAT@all@names + \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% + \fi + \ifNAT@full\let\NAT@nm\NAT@all@names\else + \let\NAT@nm\NAT@name\fi + \ifNAT@swa\ifcase\NAT@ctype + \if\relax\NAT@date\relax + \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}% + \else + \ifx\NAT@last@nm\NAT@nm\NAT@yrsep + \ifx\NAT@last@yr\NAT@year + \def\NAT@temp{{?}}% + \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}% + {Multiple citation on page \thepage: same authors and + year\MessageBreak without distinguishing extra + letter,\MessageBreak appears as question mark}\fi + \NAT@hyper@{\NAT@exlab}% + \else\unskip\NAT@spacechar + \NAT@hyper@{\NAT@date}% + \fi + \else + \@citea\NAT@hyper@{% + \NAT@nmfmt{\NAT@nm}% + \hyper@natlinkbreak{% + \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb + }% + \NAT@date + }% + \fi + \fi + \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% + \or\@citea\NAT@hyper@{\NAT@date}% + \or\@citea\NAT@hyper@{\NAT@alias}% + \fi \NAT@def@citea + \else + \ifcase\NAT@ctype + \if\relax\NAT@date\relax + \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% + \else + \ifx\NAT@last@nm\NAT@nm\NAT@yrsep + \ifx\NAT@last@yr\NAT@year + \def\NAT@temp{{?}}% + \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}% + {Multiple citation on page \thepage: same authors and + year\MessageBreak without distinguishing extra + letter,\MessageBreak appears as question mark}\fi + \NAT@hyper@{\NAT@exlab}% + \else + \unskip\NAT@spacechar + \NAT@hyper@{\NAT@date}% + \fi + \else + \@citea\NAT@hyper@{% + \NAT@nmfmt{\NAT@nm}% + \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}% + {\@citeb\@extra@b@citeb}% + \NAT@date + }% + \fi + \fi + \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% + \or\@citea\NAT@hyper@{\NAT@date}% + \or\@citea\NAT@hyper@{\NAT@alias}% + \fi + \if\relax\NAT@date\relax + \NAT@def@citea + \else + \NAT@def@citea@close + \fi + \fi + }}\ifNAT@swa\else + % \if*#2*\else\NAT@cmt#2\fi + \if\relax\NAT@date\relax\else\NAT@@close\fi + \if*#2*\else\textsuperscript{#2}\fi + \fi}{#1}{#2}} + \renewcommand\bibsection{\nxu@chapter*{\bibname}} + \newcommand\nxu@set@bibliography@format{% + \renewcommand\bibfont{\fontsize{10.5bp}{16bp}\selectfont}% + \setlength{\bibsep}{3bp \@plus 3bp \@minus 3bp}% + \setlength{\bibhang}{21bp}% + } + \nxu@set@bibliography@format + \nxu@option@hook{degree}{\nxu@set@bibliography@format} + \nxu@option@hook{main-language}{\nxu@set@bibliography@format} + \patchcmd\thebibliography{% + \clubpenalty4000% + }{% + \interlinepenalty=5000\relax + \clubpenalty=10000\relax + }{}{\nxu@patch@error{\thebibliography}} + \patchcmd\thebibliography{% + \widowpenalty4000% + }{% + \widowpenalty=10000\relax + }{}{\nxu@patch@error{\thebibliography}} + \def\@biblabel#1{[#1]\hfill} + \renewcommand\NAT@bibsetnum[1]{% + % \settowidth\labelwidth{\@biblabel{#1}}% + % \setlength{\leftmargin}{\labelwidth}% + % \addtolength{\leftmargin}{\labelsep}% + \setlength{\leftmargin}{1cm}% + \setlength{\itemindent}{\z@}% + \setlength{\labelsep}{0.1cm}% + \setlength{\labelwidth}{0.9cm}% + \setlength{\itemsep}{\bibsep} + \setlength{\parsep}{\z@}% + \ifNAT@openbib + \addtolength{\leftmargin}{\bibindent}% + \setlength{\itemindent}{-\bibindent}% + \setlength{\listparindent}{\itemindent}% + \setlength{\parsep}{0pt}% + \fi + } +} +\AtEndOfPackageFile*{biblatex}{ + \AtBeginDocument{ + \ifthenelse{\equal{\blx@bbxfile}{apa}}{\def\bibname{REFERENCES}}{} + \ifthenelse{\equal{\blx@bbxfile}{apa6}}{\def\bibname{REFERENCES}}{} + \ifthenelse{\equal{\blx@bbxfile}{mla}}{\def\bibname{WORKS CITED}}{} + \ifthenelse{\equal{\blx@bbxfile}{mla-new}}{\def\bibname{WORKS CITED}}{} + } + \DeclareRobustCommand\inlinecite{\parencite} + \defbibheading{bibliography}[\bibname]{\nxu@chapter*{\bibname}} + \newcommand\nxu@set@bibliography@format{% + \renewcommand\bibfont{\fontsize{10.5bp}{16bp}\selectfont}% + \setlength{\bibitemsep}{3bp \@plus 3bp \@minus 3bp}% + \setlength{\biblabelsep}{0.1cm}% + \setlength{\bibhang}{21bp}% + } + \nxu@set@bibliography@format + \nxu@option@hook{degree}{\nxu@set@bibliography@format} + \nxu@option@hook{main-language}{\nxu@set@bibliography@format} +} +\AtEndOfPackageFile*{apacite}{ + \AtBeginDocument{ + \nxu@set@chapter@names + } + \renewcommand\bibliographytypesize{\fontsize{10.5bp}{17bp}\selectfont} + \setlength{\bibitemsep}{6bp} + \ifnxu@main@language@chinese + \setlength{\bibleftmargin}{21bp} + \setlength{\bibindent}{-\bibleftmargin} + \else + \setlength{\bibleftmargin}{0.5in} + \setlength{\bibindent}{-\bibleftmargin} + \fi + \def\st@rtbibchapter{% + \if@numberedbib% + \chapter{\bibname}% e.g., 6. References + \else% + \nxu@chapter*{\bibname}% e.g., References + \fi% + }% +} +\g@addto@macro\appendix{% + \@mainmattertrue +} +\nxu@define@key{ + toc-depth = { + name = toc@depth, + }, +} +\nxu@option@hook{toc-depth}{% + \ifx\@begindocumenthook\@undefined + \protected@write\@auxout{}{% + \string\ttl@writefile{toc}{% + \protect\setcounter{tocdepth}{\nxu@toc@depth}% + }% + }% + \else + \setcounter{tocdepth}{\nxu@toc@depth}% + \fi +} +\g@addto@macro\appendix{% + \nxusetup{ + toc-depth = 0, + }% +} +\nxu@define@key{ + appendix-figure-in-lof = { + name = appendix@figure@in@lof, + choices = { + true, + false, + }, + default = false, + }, +} +\nxu@option@hook{appendix-figure-in-lof}{% + \ifnxu@appendix@figure@in@lof@true + \addtocontents{lof}{\string\let\string\contentsline\string\ttl@contentsline}% + \addtocontents{lot}{\string\let\string\contentsline\string\ttl@contentsline}% + \addtocontents{loe}{\string\let\string\contentsline\string\ttl@contentsline}% + \else + \addtocontents{lof}{\string\let\string\contentsline\string\ttl@gobblecontents}% + \addtocontents{lot}{\string\let\string\contentsline\string\ttl@gobblecontents}% + \addtocontents{loe}{\string\let\string\contentsline\string\ttl@gobblecontents}% + \fi +} +\g@addto@macro\appendix{% + \nxusetup{ + appendix-figure-in-lof = false, + }% +} +\newcommand\nxu@end@appendix@ref@section{} +\AtBeginOfPackageFile*{bibunits}{ + \def\bibliography#1{% + \if@filesw + \immediate\write\@auxout{\string\bibdata{\zap@space#1 \@empty}}% + \immediate\write\@auxout{\string\gdef\string\bu@bibdata{#1}}% + \fi + \@input@{\jobname.bbl}% + \gdef\bu@bibdata{#1}% + } + \def\bibliographystyle#1{% + \ifx\@begindocumenthook\@undefined\else + \expandafter\AtBeginDocument + \fi + {\if@filesw + \immediate\write\@auxout{\string\bibstyle{#1}}% + \immediate\write\@auxout{\string\gdef\string\bu@bibstyle{#1}}% + \fi}% + \gdef\bu@bibstyle{#1}% + } +} +\AtEndOfPackageFile*{bibunits}{ + \def\@startbibunit{% + \global\let\@startbibunitorrelax\relax + \global\let\@finishbibunit\@finishstartedbibunit + \global\advance\@bibunitauxcnt 1 + \if@filesw + {\endlinechar-1 + \makeatletter + \@input{\@bibunitname.aux}}% + \immediate\openout\@bibunitaux\@bibunitname.aux + \immediate\write\@bibunitaux{\string\bibstyle{\@localbibstyle}}% + \fi + } + \def\bu@bibliography#1{% + \putbib[#1]% + } + \def\bu@bibliographystyle#1{% + \if@filesw + \immediate\write\@bibunitaux{\string\gdef\string\@localbibstyle{#1}}% + \fi + \gdef\@localbibstyle{#1}% + } + \providecommand\printbibliography{\putbib\relax}% + \g@addto@macro\appendix{% + \renewcommand\@bibunitname{\jobname-appendix-\@alph\c@chapter}% + \bibliographyunit[\chapter]% + \renewcommand\bibsection{% + \ctexset{section/numbering = false}% + \section{\bibname}% + \ctexset{section/numbering = true}% + }% + \ifnxu@degree@graduate + \renewcommand\citenumfont{\@Alph\c@chapter.}% + \renewcommand\@extra@binfo{@-\@alph\c@chapter}% + \renewcommand\@extra@b@citeb{@-\@alph\c@chapter}% + \renewcommand\bibnumfmt[1]{[\@Alph\c@chapter.#1]\hfill}% + \fi + } + \renewcommand\nxu@end@appendix@ref@section{% + \bibliographyunit\relax + } + \AtEndDocument{\nxu@end@appendix@ref@section} + \renewcommand\nxu@set@survey@bibheading{% + \renewcommand\bibsection{% + \par + \vskip 20bp% + \nxu@pdfbookmark{1}{\bibname}% + \begingroup + \centering + \xiaosi[1.667]\bibname\par + \endgroup + \vskip 6bp% + }% + }% + % \let\@xtestdef\@gobbletwo % This doesn't work + \def\bibunits@rerun@warning{\relax} +} +\PassOptionsToPackage{defernumbers = true}{biblatex} +\AtEndOfPackageFile*{biblatex}{ + \DeclareRefcontext{appendix}{} + \g@addto@macro\appendix{% + \pretocmd\chapter{% + \newrefsection + \@tempcnta=\c@chapter + \advance\@tempcnta\@ne + \newrefcontext[labelprefix = {\@Alph\@tempcnta.}]{appendix}% + }{}{\nxu@patch@error{\chapter}}% + \defbibheading{bibliography}[\bibname]{% + \ctexset{section/numbering = false}% + \section{#1}% + \ctexset{section/numbering = true}% + }% + } + \renewcommand\nxu@set@survey@bibheading{% + \defbibheading{bibliography}[\bibname]{% + \par + \vskip 20bp% + \nxu@pdfbookmark{1}{\bibname}% + \begingroup + \centering + \xiaosi[1.667]##1\par + \endgroup + \vskip 6bp% + }% + }% + \def\bibliographystyle#1{% + \nxu@warning{'bibliographystyle' invalid for 'biblatex'.}% + } +} +\@ifpackagelater{titletoc}{2019/07/14}{ + \newcommand\nxu@print@contents[5]{% + \printcontents[#1]{#2}{#3}[#4]{}% + } +}{ + \newcommand\nxu@print@contents[5]{% + \printcontents[#1]{#2}{#3}{\setcounter{tocdepth}{#4}#5}% + } +} +\newenvironment{survey}{% + \chapter{外文资料的调研阅读报告}% + \nxusetup{language = english}% + \let\title\nxu@appendix@title + \let\maketitle\nxu@appendix@maketitle + \nxu@set@partial@toc@format + \renewcommand\tableofcontents{% + \section*{Contents}% + \nxu@pdfbookmark{1}{Contents}% + \nxu@print@contents{survey}{l}{1}{2}{}% + \vskip 20bp% + }% + \let\appendix\nxu@appendix@appendix + \nxu@set@survey@bibheading + \renewcommand\bibname{参考文献}% + \startcontents[survey]% +}{% + \stopcontents[survey]% + \nxu@reset@main@language % restore language +} +\newcommand\nxu@set@appendix@bib@heading{} +\newenvironment{translation}{% + \chapter{外文资料的书面翻译}% + \nxusetup{language = chinese}% + \let\title\nxu@appendix@title + \let\maketitle\nxu@appendix@maketitle + \renewenvironment{abstract}{% + \ctexset{ + section = { + format += \centering, + numbering = false, + }, + }% + \section{摘要}% + }{% + \par + \ifx\nxu@keywords\@empty\else + \textbf{关键词:}\nxu@clist@use{\nxu@keywords}{;}\par + \fi + }% + \nxu@set@partial@toc@format + \renewcommand\tableofcontents{% + \section*{目录}% + \nxu@pdfbookmark{1}{目录}% + \nxu@print@contents{translation}{l}{1}{2}{}% + \vskip 20bp% + }% + \let\appendix\nxu@appendix@appendix + \def\bibsection{% + \begingroup + \ctexset{section/numbering=false}% + \section{\bibname}% + \endgroup + }% + \startcontents[translation]% +}{% + \stopcontents[translation]% + \nxu@reset@main@language % restore language +} +\newenvironment{translation-index}{}{} +\AtEndOfPackageFile*{bibunits}{ + \renewenvironment{translation-index}{% + \begin{bibunit}% + \renewcommand\@bibunitname{\jobname-index}% + \renewcommand\bibname{书面翻译对应的原文索引}% + \nxu@set@survey@bibheading + }{% + \end{bibunit}% + } +} +\AtEndOfPackageFile*{biblatex}{ + \renewenvironment{translation-index}{% + \endrefsection + \begin{refsection}% + \renewcommand\bibname{书面翻译对应的原文索引}% + \nxu@set@survey@bibheading + }{% + \end{refsection}% + } +} +\DeclareRobustCommand\nxu@appendix@title[1]{\gdef\nxu@appendix@@title{#1}} +\newcommand\nxu@appendix@maketitle{% + \par + \begin{center}% + \xiaosi[1.667]\nxu@appendix@@title + \end{center}% + \par +} +\newcommand\nxu@set@partial@toc@format{% + \titlecontents{section} + [\z@]{} + {\contentspush{\thecontentslabel\quad}}{} + {\nxu@leaders\thecontentspage}% + \titlecontents{subsection} + [1em]{} + {\contentspush{\thecontentslabel\quad}}{} + {\nxu@leaders\thecontentspage}% + \titlecontents{subsubsection} + [2em]{} + {\contentspush{\thecontentslabel\quad}}{} + {\nxu@leaders\thecontentspage}% +} +\newcommand\nxu@appendix@appendix{% + \def\theHsection{\Hy@AlphNoErr{section}}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \renewcommand\thesection{\thechapter.\@Alph\c@section}% +}% +\newcommand\nxu@set@survey@bibheading{} +\newenvironment{resume}{% + \@mainmatterfalse + \nxu@end@appendix@ref@section + \nxu@chapter*{\nxu@resume@name}% + \ctexset{ + section = { + format += \centering, + numbering = false, + }, + }% + \ifnxu@language@chinese + \ctexset{ + subsection = { + format = \sffamily\fontsize{12bp}{20bp}\selectfont, + numbering = false, + aftertitle = :, + }, + }% + \setlist[achievements]{ + topsep = 6bp, + itemsep = 6bp, + leftmargin = 1cm, + labelwidth = 1cm, + labelsep = 0pt, + first = {\fontsize{10.5bp}{14bp}\selectfont}, + align = left, + label = [\arabic*], + resume = achievements, + }% + \else + \ctexset{ + subsection = { + beforeskip = 0pt, + afterskip = 0pt, + format = \bfseries\normalsize, + indent = \parindent, + numbering = false, + }, + }% + \setlist[achievements]{ + topsep = 0bp, + itemsep = 0bp, + leftmargin = 1.75cm, + labelsep = 0.5cm, + align = right, + label = [\arabic*], + resume = achievements, + }% + \fi +}{} +\newcommand\resumeitem[1]{% + \nxu@error{The "\protect\resumeitem" is obsolete. Please update to the new format}% +} +\newcommand\researchitem[1]{% + \nxu@error{The "\protect\researchitem" is obsolete. Please update to the new format}% +} +\newlist{achievements}{enumerate}{1} +\setlist[achievements]{ + topsep = 6bp, + partopsep = 0bp, + itemsep = 6bp, + parsep = 0bp, + leftmargin = 10mm, + itemindent = 0pt, + align = left, + label = [\arabic*], + resume = achievements, +} +\newenvironment{publications}{% + \nxu@deprecate{"publications" environment}{"achievements"}% + \begin{achievements}% +}{% + \end{achievements}% +} +\newcommand\publicationskip{% + \nxu@error{The "\protect\publicationskip" is obsolete. Do not use it}% +} +\NewEnviron{comments}[1][]{% + \nxu@end@appendix@ref@section + \ifnxu@degree@graduate + \@mainmatterfalse + \kv@define@key{nxu@comments}{name}{\let\nxu@comments@name\kv@value}% + \kv@set@family@handler{nxu@comments}{% + \ifx\kv@value\relax + \let\nxu@comments@name\kv@key + \else + \kv@handled@false + \fi + }% + \kvsetkeys{nxu@comments}{#1}% + \chapter{\nxu@comments@name}% + \BODY\clearpage + \fi +} +\NewEnviron{resolution}{% + \nxu@end@appendix@ref@section + \ifnxu@degree@graduate + \@mainmatterfalse + \chapter{\nxu@resolution@name}% + \BODY\clearpage + \fi +} +\newcommand{\record}[1]{% + \let\nxu@record@file\@empty + \kv@define@key{nxu@record}{file}{\let\nxu@record@file\kv@value}% + \kv@set@family@handler{nxu@record}{% + \ifx\kv@value\relax + \let\nxu@record@file\kv@key + \else + \kv@handled@false + \fi + }% + \kvsetkeys{nxu@record}{#1}% + \ifx\nxu@record@file\@empty + \nxu@error{File path of \protect\record\space is required} + \fi + \cleardoublepage + \nxu@pdfbookmark{0}{综合论文训练记录表}% + \includepdf[pages=-]{\nxu@record@file}% +} +\PassOptionsToPackage{ + linktoc = all, + bookmarksdepth = 2, + bookmarksnumbered = true, + bookmarksopen = true, + bookmarksopenlevel = 1, + bookmarksdepth = 3, + unicode = true, + psdextra = true, + breaklinks = true, + plainpages = false, + pdfdisplaydoctitle = true, + hidelinks, +}{hyperref} +\AtEndOfPackageFile*{hyperref}{ + \newcounter{nxu@bookmark} + \renewcommand\nxu@pdfbookmark[2]{% + \phantomsection + \stepcounter{nxu@bookmark}% + \pdfbookmark[#1]{#2}{nxuchapter.\thenxu@bookmark}% + } + \renewcommand\nxu@phantomsection{% + \phantomsection + } + \pdfstringdefDisableCommands{% + \let\\\relax + \let\quad\relax + \let\qquad\relax + \let\hspace\@gobble + }% + \@ifpackagelater{hyperref}{2019/04/27}{}{% + \g@addto@macro\psdmapshortnames{\let\mu\textmu} + }% + \ifnxu@main@language@chinese + \hypersetup{ + pdflang = zh-CN, + }% + \else + \hypersetup{ + pdflang = en-US, + }% + \fi + \AtBeginDocument{% + \ifnxu@main@language@chinese + \hypersetup{ + pdftitle = \nxu@title, + pdfauthor = \nxu@author, + pdfsubject = \nxu@degree@category, + pdfkeywords = \nxu@keywords, + }% + \else + \hypersetup{ + pdftitle = \nxu@title@en, + pdfauthor = \nxu@author@en, + pdfsubject = \nxu@degree@category@en, + pdfkeywords = \nxu@keywords@en, + }% + \fi + \hypersetup{ + pdfcreator={\nxuthesis-v\version}} + }% +} +\AtEndOfPackageFile*{mathtools}{ + \@ifpackageloaded{unicode-math}{ + \let\underbrace\LaTeXunderbrace + \let\overbrace\LaTeXoverbrace + }{} +} +\AtEndOfPackageFile*{nomencl}{ + \let\nomname\nxu@denotation@name + \def\thenomenclature{\begin{denotation}[\nom@tempdim]} + \def\endthenomenclature{\end{denotation}} +} +\AtEndOfPackageFile*{siunitx}{% + \newcommand\nxu@set@siunitx@language{% + \ifnxu@language@chinese + \sisetup{ + list-final-separator = { 和 }, + list-pair-separator = { 和 }, + range-phrase = {~}, + }% + \else + \ifnxu@language@english + \sisetup{ + list-final-separator = {, and }, + list-pair-separator = { and }, + range-phrase = { to }, + }% + \fi + \fi + } + \nxu@set@siunitx@language + \nxu@option@hook{language}{\nxu@set@siunitx@language} +} +\AtEndOfPackageFile*{amsthm}{% + \newtheoremstyle{nxu} + {\z@}{\z@} + {\normalfont}{\z@} + {\normalfont\sffamily}{\nxu@theorem@separator} + {0.5em}{} + \theoremstyle{nxu} + \newtheorem{assumption}{\nxu@assumption@name}[chapter]% + \newtheorem{definition}{\nxu@definition@name}[chapter]% + \newtheorem{proposition}{\nxu@proposition@name}[chapter]% + \newtheorem{lemma}{\nxu@lemma@name}[chapter]% + \newtheorem{theorem}{\nxu@theorem@name}[chapter]% + \newtheorem{axiom}{\nxu@axiom@name}[chapter]% + \newtheorem{corollary}{\nxu@corollary@name}[chapter]% + \newtheorem{exercise}{\nxu@exercise@name}[chapter]% + \newtheorem{example}{\nxu@example@name}[chapter]% + \newtheorem{remark}{\nxu@remark@name}[chapter]% + \newtheorem{problem}{\nxu@problem@name}[chapter]% + \newtheorem{conjecture}{\nxu@conjecture@name}[chapter]% + \renewenvironment{proof}[1][\nxu@proof@name]{\par + \pushQED{\qed}% + % \normalfont \topsep6\p@\@plus6\p@\relax + \normalfont \topsep\z@\relax + \trivlist + \item[\hskip\labelsep + % \itshape + % #1\@addpunct{.}]\ignorespaces + \sffamily + #1]\ignorespaces + }{% + \popQED\endtrivlist\@endpefalse + } + \renewcommand\qedsymbol{\nxu@qed} +} +\AtEndOfPackageFile*{ntheorem}{% + \theorembodyfont{\normalfont}% + \theoremheaderfont{\normalfont\sffamily}% + \theoremsymbol{\nxu@qed}% + \newtheorem*{proof}{\nxu@proof@name}% + \theoremstyle{plain}% + \theoremsymbol{}% + \theoremseparator{\nxu@theorem@separator}% + \newtheorem{assumption}{\nxu@assumption@name}[chapter]% + \newtheorem{definition}{\nxu@definition@name}[chapter]% + \newtheorem{proposition}{\nxu@proposition@name}[chapter]% + \newtheorem{lemma}{\nxu@lemma@name}[chapter]% + \newtheorem{theorem}{\nxu@theorem@name}[chapter]% + \newtheorem{axiom}{\nxu@axiom@name}[chapter]% + \newtheorem{corollary}{\nxu@corollary@name}[chapter]% + \newtheorem{exercise}{\nxu@exercise@name}[chapter]% + \newtheorem{example}{\nxu@example@name}[chapter]% + \newtheorem{remark}{\nxu@remark@name}[chapter]% + \newtheorem{problem}{\nxu@problem@name}[chapter]% + \newtheorem{conjecture}{\nxu@conjecture@name}[chapter]% +} +\PassOptionsToPackage{chapter}{algorithm} +\AtEndOfPackageFile*{algorithm}{ + \floatname{algorithm}{\nxu@algorithm@name} + \renewcommand\listofalgorithms{% + \nxu@listof{algorithm}% + } + \renewcommand\listalgorithmname{\nxu@list@algorithm@name} + \def\ext@algorithm{loa} + \contentsuse{algorithm}{loa} + \titlecontents{algorithm} + [\z@]{} + {\contentspush{\fname@algorithm~\thecontentslabel\quad}}{} + {\nxu@leaders\thecontentspage} +} +\PassOptionsToPackage{algochapter}{algorithm2e} +\AtEndOfPackageFile*{algorithm2e}{ + \renewcommand\algorithmcfname{\nxu@algorithm@name} + \SetAlgoCaptionLayout{nxu@caption@font} + \SetAlCapSty{relax} + \SetAlgoCaptionSeparator{\hspace*{1em}} + \SetAlFnt{\fontsize{11bp}{14.3bp}\selectfont} + \renewcommand\listofalgorithms{% + \nxu@listof{algorithmcf}% + } + \renewcommand\listalgorithmcfname{\nxu@list@algorithm@name} + \def\ext@algorithmcf{loa} + \contentsuse{algocf}{loa} + \titlecontents{algocf} + [\z@]{} + {\contentspush{\algorithmcfname~\thecontentslabel\quad}}{} + {\nxu@leaders\thecontentspage} +} +\AtEndOfPackageFile*{minted}{ + \newcommand\nxu@set@listing@language{% + \ifnxu@language@chinese + \floatname{listing}{代码}% + \else + \floatname{listing}{Listing}% + \fi + } + \nxu@set@listing@language + \nxu@option@hook{language}{\nxu@set@listing@language} +} +\nxu@define@key{ + spine-font = { + name = spine@font, + }, + spine-student-id = { + name = spine@student@id, + }, + spine-title = { + name = spine@title, + }, + spine-author = { + name = spine@author, + }, +} +\renewcommand\nxu@spine@font{% + \ifnxu@degree@doctor + \fontsize{16bp}{20.8bp}\selectfont + \else + \fontsize{15bp}{19.5bp}\selectfont + \fi +} +\newcommand*\CJKmovesymbol[1]{\raise.3em\hbox{#1}} +\newcommand*\CJKmove{% + \punctstyle{plain}% + \let\CJKsymbol\CJKmovesymbol + \let\CJKpunctsymbol\CJKsymbol +} +\NewDocumentCommand{\spine}{ + O{ + \ifx\nxu@spine@student@id\@empty + \nxu@student@id + \else + \nxu@spine@student@id + \fi + } + O{ + \ifx\nxu@spine@title\@empty + \nxu@title + \else + \nxu@spine@title + \fi + } + O{ + \ifx\nxu@spine@author\@empty + \nxu@author + \else + \nxu@spine@author + \fi + }}{% + \clearpage + \newgeometry{ + vmargin = 5.0cm, + hmargin = 1cm, + }% + \thispagestyle{empty}% + \ifnxu@main@language@chinese + \nxu@pdfbookmark{0}{书脊}% + \else + \nxu@pdfbookmark{0}{Spine}% + \fi + \begingroup + \noindent\hfill + \rotatebox[origin=lt]{-90}{% + \makebox[\textheight]{% + \fangsong + \addCJKfontfeatures*{RawFeature={vertical}}% + \nxu@spine@font + \CJKmove + #1\hfill + #2\hfill + #3 + }% + }% + \endgroup + \clearpage + \restoregeometry +} +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} +\DeclareRobustCommand\file{\nolinkurl} +\DeclareRobustCommand\env{\textsf} +\DeclareRobustCommand\pkg{\textsf} +\DeclareRobustCommand\cls{\textsf} +\sloppy +\endinput +%% +%% End of file `nxuthesis.cls'. diff --git a/macros/unicodetex/latex/nxuthesis/ref/refs.bib b/macros/unicodetex/latex/nxuthesis/ref/refs.bib new file mode 100644 index 0000000000..6eb5862de4 --- /dev/null +++ b/macros/unicodetex/latex/nxuthesis/ref/refs.bib @@ -0,0 +1,335 @@ +@article{zhangkun1994, + author = {张昆 and 冯立群 and 余昌钰 and others}, + title = {机器人柔性手腕的球面齿轮设计研究}, + journal = {清华大学学报: 自然科学版}, + volume = {34}, + number = {2}, + pages = {1--7}, + year = {1994}, + key = {zhang1 kun1}, +} + +@book{zhukezhen1973, + author = {竺可桢}, + title = {物理学论}, + address = {北京}, + publisher = {科学出版社}, + year = {1973}, + pages = {56--60}, + key = {zhu2 ke3 zhen1}, +} + +@inproceedings{dupont1974bone, + author = {Dupont, B}, + title = {Bone marrow transplantation in severe combined immunodeficiency with an unrelated MLC compatible donor}, + editor = {White, H J and Smith, R}, + booktitle = {Proceedings of the third annual meeting of the International Society for Experimental Hematology}, + address = {Houston}, + publisher = {International Society for Experimental Hematology}, + year = {1974}, + pages = {44--46}, +} + +@mastersthesis{zhengkaiqing1987, + author = {郑开青}, + title = {通讯系统模拟及软件}, + address = {北京}, + school = {清华大学无线电系}, + year = {1987}, + key = {zheng4 kai1 qing1}, +} + +@patent{jiangxizhou1980, + author = {姜锡洲}, + title = {一种温热外敷药制备方案}, + address = {中国}, + number = {88105607.3}, + year = {1980}, + date = {1980-07-26}, + key = {jiang1 xi1 zhou1}, +} + +@standard{jianduju1994, + author = {中华人民共和国国家技术监督局}, + title = {GB3100-3102. 中华人民共和国国家标准-量与单位}, + address = {北京}, + publisher = {中国标准出版社}, + year = {1994}, + key = {zhong1 hua2 ren2 min2 gong4 he2 guo2}, +} + +@article{merkt1995rotational, + author = {Merkt, Fr{\'e}d{\'e}ric and Mackenzie, S R and Softley, Timothy P}, + title = {Rotational Autoionization Dynamics in High Rydberg States of Nitrogen}, + journal = {J Chem Phys}, + year = {1995}, + volume = {103}, + pages = {4509--4518}, +} + +@article{mellinger1996laser, + author = {Mellinger, A and Vidal, C R and Jungen, {Ch}}, + title = {Laser reduced fluorescence study of the carbon monoxide nd triplet Rydberg series - Experimental results and multichannel quantum defect analysis}, + journal = {J Chem Phys}, + year = {1996}, + volume = {104}, + pages = {8913--8921}, +} + +@article{bixon1996dynamics, + author = {Bixon, M and Jortner, Joshua}, + title = {The dynamics of predissociating high {Rydberg} states of {NO}}, + journal = {J Chem Phys}, + year = {1996}, + volume = {105}, + pages = {1363--1382}, +} + +@article{mahui1995, + author = {马辉 and 李俭 and 刘耀明 and others}, + title = {利用 {REMPI} 方法测量 {BaF} 高里德堡系列光谱}, + journal = {化学物理学报}, + year = {1995}, + volume = {8}, + pages = {308--311}, + key = {ma3 hui1}, +} + +@article{carlson1981two, + author = {Carlson, N W and Taylor, A J and Jones, K M and Schawlow, A L}, + title = {Two-step polarization-labeling spectroscopy of excited states of {Na2}}, + journal = {Phys Rev A}, + year = {1981}, + volume = {24}, + pages = {822--834}, +} + +@article{taylor1983scanning, + author = {Taylor, A J and Jones, K M and Schawlow, A L}, + title = {Scanning pulsed-polarization spectrometer applied to {Na2}}, + journal = {J Opt Soc Am}, + year = {1983}, + volume = {73}, + pages = {994--998}, +} + +@article{taylor1981study, + author = {Taylor, A J and Jones, K M and Schawlow, A L}, + title = {A study of the excited {1$\Sigma$g+} states in {Na2}}, + journal = {Opt Commun}, + year = {1981}, + volume = {39}, + pages = {47--50}, +} + +@article{shimizu1983laser, + author = {Shimizu, Kazuko and Shimizu, Fujio}, + title = {Laser induced fluorescence spectra of the a {3$\Pi$u--X 1$\Sigma$g+} band of {Na2} by molecular beam}, + journal = {J Chem Phys}, + year = {1983}, + volume = {78}, + pages = {1126--1131}, +} + +@article{atkinson1982experimental, + author = {Atkinson, J B and Becker, J and Demtr{\"o}der, W}, + title = {Experimental observation of the a {3$\Pi$u} state of {Na2}}, + journal = {Chem Phys Lett}, + year = {1982}, + volume = {87}, + pages = {92--97}, +} + +@article{kusch1975perturbations, + author = {Kusch, P and Hessel, M M}, + title = {Perturbations in the A {1$\Sigma$u+} state of {Na2}}, + journal = {J Chem Phys}, + year = {1975}, + volume = {63}, + pages = {4087--4088}, +} + +@book{guangxi1993, + author = {广西壮族自治区林业厅}, + title = {广西自然保护区}, + address = {北京}, + publisher = {中国林业出版社}, + year = {1993}, + key = {guang3 xi1 zhuang4 zu2 zi4 zhi4 qu1}, +} + +@book{huosini1989guwu, + author = {霍斯尼}, + title = {谷物科学与工艺学原理}, + translator = {李庆龙}, + edition = {2}, + address = {北京}, + publisher = {中国食品出版社}, + year = {1989}, + pages = {15--20}, + key = {huo4 si1 ni2}, +} + +@book{wangfuzhi1865songlun, + author = {王夫之}, + title = {宋论}, + edition = {刻本}, + address = {金陵}, + publisher = {曾氏}, + year = {1865(清同治四年)}, + key = {wang2 fu1 zhi1}, +} + +@book{zhaoyaodong1998xinshidai, + author = {赵耀东}, + title = {新时代的工业工程师}, + address = {台北}, + publisher = {天下文化出版社}, + year = {1998}, + urldate = {1998-09-26}, + url = {http://www.ie.nthu.edu.tw/info/ie.newie.htm}, + key = {zhao4 yao4 dong1}, +} + +@standard{biaozhunhua2002tushu, + author = {全国信息与文献工作标准化技术委员会出版物格式分委员会}, + title = {GB/T 12450-2001 图书书名页}, + address = {北京}, + publisher = {中国标准出版社}, + year = {2002}, + pages = {1}, + key = {quan2 guo2 xin4 xi1}, +} + +@book{chubanzhuanye2004, + author = {全国出版专业职业资格考试办公室}, + title = {全国出版专业职业资格考试辅导教材: 出版专业理论与实务•中级}, + edition = {2014}, + address = {上海}, + publisher = {上海辞书出版社}, + year = {2004}, + pages = {299--307}, + key = {quan2 guo2 chu1 ban3 ye4}, +} + +@techreport{who1970factors, + author = {{World Health Organization}}, + title = {Factors Regulating the Immune Response: Report of {WHO Scientific Group}}, + address = {Geneva}, + publisher = {WHO}, + year = {1970}, +} + +@book{peebles2001probability, + author = {Peebles, Jr, Peyton Z.}, + title = {Probability, Random Variables, and Random Signal Principles}, + edition = {4}, + address = {New York}, + publisher = {McGraw Hill}, + year = {2001}, +} + +@incollection{baishunong1998zhiwu, + author = {白书农}, + title = {植物开花研究}, + editor = {李承森}, + booktitle = {植物科学进展}, + address = {北京}, + publisher = {高等教育出版社}, + year = {1998}, + pages = {146--163}, + key = {bai2 shu1 nong2}, +} + +@incollection{weinstein1974pathogenic, + author = {Weinstein, L and Swertz, M N}, + title = {Pathogenic Properties of Invading Microorganism}, + editor = {Sodeman, Jr, William A and Sodeman, William A}, + booktitle = {Pathologic physiology: mechanisms of disease}, + address = {Philadelphia}, + publisher = {Saunders}, + year = {1974}, + pages = {745--772}, +} + +@inproceedings{hanjiren1985lun, + author = {韩吉人}, + title = {论职工教育的特点}, + editor = {中国职工教育研究会}, + booktitle = {职工教育研究论文集}, + address = {北京}, + publisher = {人民教育出版社}, + year = {1985}, + pages = {90--99}, + key = {han2 ji2 ren2}, +} + +@periodical{dizhi1936dizhi, + author = {中国地质学会}, + title = {地质评论}, + year = {1936}, + volume = {1}, + number = {1}, + address = {北京}, + publisher = {地质出版社}, + key = {zhong1 guo2 di4 zhi3 xue2 hui4}, +} + +@periodical{tushuguan1957tushuguanxue, + author = {中国图书馆学会}, + title = {图书馆学通讯}, + year = {1957/1990}, + number = {1--4}, + address = {北京}, + publisher = {北京图书馆}, + key = {zhong1 guo2 tu2 shu1 guan3 xue2 hui4}, +} + +@periodical{aaas1883science, + author = {{American Association for the Advancement of Science}}, + title = {Science}, + year = {1883}, + volume = {1}, + number = {1}, + address = {Washington, D.C.}, + publisher = {American Association for the Advancement of Science}, +} + +@newspaper{fugang2000fengsha, + author = {傅刚 and 赵承 and 李佳路}, + title = {大风沙过后的思考}, + journal = {北京青年报}, + year = {2000}, + date = {2000-04-12}, + number = {14}, + urldate = {2002-03-06}, + url = {http://www.bjyouth.com.cn/Bqb/20000412/B/4216%5ED0412B1401.htm}, + key = {fu4 gang1}, +} + +@online{xiaoyu2001chubanye, + author = {萧钰}, + title = {出版业信息化迈入快车道}, + year = {2001}, + date = {2001-12-19}, + urldate = {2002-04-15}, + url = {http://www.creader.com/news/20011219/200112190019.htm}, + key = {xiao1 yu4}, +} + +@online{oclc2000about, + author = {{Online Computer Library Center, Inc}}, + title = {About {OCLC}: History of Cooperation}, + year = {2000}, + urldate = {2000-01-08}, + url = {http://www.oclc.org/about/cooperation.en.htm}, +} + +@software{scitor2000project, + author = {{Scitor Corporation}}, + title = {Project scheduler}, + address = {Sunnyvale, Calif.}, + publisher = {Scitor Corporation}, + year = {1983}, + medium = {DK}, +} |