From f4bbbeba7dfaf4392de36cec9558b77249c128f9 Mon Sep 17 00:00:00 2001 From: thehrz Date: Sat, 24 Aug 2024 21:48:02 +0800 Subject: [PATCH] pref: update packets --- README.md | 6 +- chapters/about-ipv6.tex | 97 +++ chapters/acknowledgements.tex | 7 +- chapters/intro.tex | 65 +- main.tex | 5 + thesis.cls | 1261 ++++++++++++++++----------------- 6 files changed, 772 insertions(+), 669 deletions(-) create mode 100644 chapters/about-ipv6.tex diff --git a/README.md b/README.md index a08e7b4..9e0b57c 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,8 @@ Fork from [ustcthesis](https://github.com/ustctug/ustcthesis). -本项目是合肥市第八中学论文 LaTeX 模板 ustcthesis,按照 《研究生学位论文撰写手册》(最近在修订中) 和 《中国科学技术大学本科毕业论文(设计)格式》 的要求编写,兼容最新版的 TeX Live、MacTeX 、MiKTeX 发行版,支持跨平台使用。 +本项目是合肥市第八中学论文 LaTeX 模板,基于 ustcthesis 进行了修改。 + +## 主要改动 + +- 增加了合肥市第八中学的 logo diff --git a/chapters/about-ipv6.tex b/chapters/about-ipv6.tex new file mode 100644 index 0000000..8a2d628 --- /dev/null +++ b/chapters/about-ipv6.tex @@ -0,0 +1,97 @@ +% !TeX root = ../main.tex + +\chapter{IPv6及相关计算机网络概念概述} + +\section{IP} + +网际协议(Internet Protocol,又称互联网协议),是互联网协议包中的网络层通信协议,用于跨网络边界分组交换。 +它的路由功能实现了互联互通,并从本质上建立了互联网。 + +IP是在TCP/IP协议族中网络层的主要协议,任务是仅根据数据包标头中的IP地址将数据包从源主机传递到目标主机。 +为此,IP协议定义了封装要传递的数据的数据包结构。 +它还定义了用于用源和目的地信息标记数据报的寻址方法。 + +\section{IP地址} + +IP地址(Internet Protocol Address,又称网际协议地址、互联网协议地址)是网际协议中用于标识发送或接收数据报的设备的一串数字。 + +\begin{itemize} + \item IPv4地址为32位长,通常书写时以四组十进制数字组成,并以点分隔,如:172.16.254.1 + \item IPv6地址为128位长,通常书写时以八组十六进制数字组成,以冒号分割,如:2001:db8:0:1234:0:567:8:1 +\end{itemize} + +\section{IPv4} + +IPv4(Internet Protocol version 4,译为网际协议第4版)是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署和使用的版本。 + +IPv4地址是32位长的,地址空间中只有约四十二亿($2^{32}$,\num{4294967296})个地址。 +但是,一些地址是为特殊用途所保留的,如专用网络和多播地址。可分配的IPv4地址仅有34.19亿个。 + +IP地址的全球性管理机构为IANA(互联网号码分配局),其下有五个区域互联网注册管理机构(RIR)。 +由IANA管理的IPv4位址,已于2011年1月31日完全分派完毕。其他五个区域的可核发地址,除了为迁移IPv6而保留的最后一块/8地址外,也随之陆续用尽。 + +亚太地区在2011年4月15日用尽,欧洲地区在2012年9月14日分派完毕;拉丁美洲及加勒比海地区为2014年6月10日;北美地区为2014年1月16日;非洲地区为2017年4月21日。 + +在大块地址块用尽后,五个区域管理机构分别发布了最后一块/8地址的分配政策,随着地址耗尽的进展,政策也在相应变化,主要是限制并逐步减少每个会员的总IPv4地址申请数量以期延缓耗尽时间。IANA也在想尽办法在全球五个区域之间灵活调配剩余可用的较小的零碎的地址块给IPv4续命。然而,北美地区在2015年9月24日,欧洲地区在2019年11月25日,最终还是将所有可用的IPv4地址完全用尽了,同时启动了排队等位政策,只有老会员归还IPv4地址,新会员才能得到相应的IPv4地址。其余三个区域的剩余地址预计到2020年底也将陆续完全用尽。 + +\section{IPv6} + +IPv6(Internet Protocol version 6,译为网际协议第6版)是网际协议的最新版本。 +用它来取代IPv4主要是为了解决IPv4地址枯竭问题,同时它也在其他方面对于IPv4有许多改进。 + +IPv6地址长度直接从IPv4的32位升级到128位。 +因此IPV6的地址空间是($2^{128}$,\num{3.40282366921e+38})个。 +较IPv4升级了$2^{96}$(\num{7.92281625143e+28})倍。此数目足以为地球上每一粒沙子分配。 +由于IPv6地址数过大,秉承一步到位的原则,这也是设想中64位的IPv5不存在的原因。 + +\subsection{我国IPv6地址拥有量} + +截至2024年5月,我国已申请IPv6地址资源总量达到\num{67462}块(/32),位居世界第二。 + +\subsection{IPv6自治系统(AS)数量} + +截至2024年5月,我国已在互联网中通告的AS数量为\num{6814}个。在已通告的AS中,支持IPv6的AS数量为\num{4799}个,占比70.43\%。 + +AS数量反应了目前我国网络发展程度。随着支持IPv6的AS数量不断提升,我国越来越多的网络完成了IPv6改造。 + +\section{IPv4地址枯竭} + +IPv4地址枯竭为可使用的IPv4未核发地址完全用尽的状况。 +值得注意的是,“分配”不指“使用”。 + +\subsection{IANA} + +此为枯竭的第一层。 + +IP地址的全球性管理机构为IANA(互联网号码分配局),由IANA管理的IPv4位址,已于2011年1月31日完全分派完毕。 +在最后5个地址块被分配给5个区域互联网注册管理机构之后,IANA的主要地址池已经用尽。 + +\subsection{RIR} + +第二层是RIR(区域互联网注册管理机构)级别的枯竭。 + +这层枯竭发生后,由该区域管理的大洲的运营商通常无法再获得新的IPv4地址块。 +一般这层枯竭全部发生后的情况视为全球IPv4地址正式完全枯竭。 + +\begin{table}[htbp] + \centering + \caption{RIR枯竭时间表} + \label{tab:RIR} + \begin{tabularx}{\textwidth}{>{\raggedright\arraybackslash}X>{\raggedright\arraybackslash}X>{\raggedright\arraybackslash}X>{\raggedright\arraybackslash}X} + \toprule + RIR & 第一阶段枯竭日期 & 第二阶段枯竭日期 & IPv4地址库规模(/24) \\ + \midrule + 亚太互联网络信息中心(APNIC) & 2011年4月15日 & 预计2024年底 & 13,974 \\ + 欧洲IP资源网络协调中心(RIPE NCC) & 2012年9月14日 & 2019年11月25日 & -282 \\ + 美洲互联网号码注册机构(ARIN) & 2014年1月16日 & 2015年9月24日 & -431 \\ + 拉丁美洲和加勒比地区互联网络信息中心(LACNIC) & 2014年6月10日 & 2020年8月21日 & -2,496 \\ + 非洲互联网络信息中心(AfriNIC) & 2017年4月21日 & 预计2027年底 & 6,527 \\ + \bottomrule + \end{tabularx} +\end{table} + +\subsection{NIR} + +第三层是NIR(国家互联网注册管理机构)的枯竭,因国家/地区而异。全球共有9个国家网络中心。 +这层枯竭发生后,该国运营商通常无法再获得新的IPv4地址块。 + diff --git a/chapters/acknowledgements.tex b/chapters/acknowledgements.tex index 0bb0dbf..bb37a54 100644 --- a/chapters/acknowledgements.tex +++ b/chapters/acknowledgements.tex @@ -1,9 +1,10 @@ % !TeX root = ../main.tex \begin{acknowledgements} - 在研究性学习期间,我们有幸得到了户雨老师的教导。户老师不仅耐心地为我指出课题立项中的不足之处,还对课题研究报告提出宝贵的建议,她在整个过程中都给予了我充分的帮助和支持。 + 首先要感谢XXX老师。XXX老师不仅耐心地为我指出课题立项中的不足之处,还对课题研究报告提出宝贵的建议。如春雨润物,XXX老师的教诲滋养了我求知的心田。她在整个过程中都给予了我充分的帮助和支持,我们在此感谢XXX老师。 - 感谢董子豪同学,他参与了项目的测试与文字稿的编写工作,还在学校给予了我诸多建议,可以说在本项目中董子豪同学起到了“一个顶俩”的重要作用。 + 感谢XXX同学,他参与了项目的测试与文字稿的编写工作,还在学校给予了我诸多建议,可以说在本项目中XXX同学起到了“一个顶俩”的重要作用。 - 感谢开源软件及自由软件运动,本项目为开源软件,更是基于开源软件。本人深受自由软件运动精神感召,没有开源软件就没有现在的互联网,现代生活的一切可能都会完全不存在了,在此特感谢开源社区中无私奉献的开发者。 + 本人深受开源软件及自由软件运动精神感召——\textit{没有开源软件就没有现在的互联网,现代生活的一切可能都会完全不存在了。} + 在此特感谢开源社区中无私奉献的开发者。 \end{acknowledgements} diff --git a/chapters/intro.tex b/chapters/intro.tex index 3cac43f..ccc9f1d 100644 --- a/chapters/intro.tex +++ b/chapters/intro.tex @@ -1,54 +1,53 @@ % !TeX root = ../main.tex -\chapter{简介} +\chapter{绪论} -\section{研究背景} +\section{关于本研究课题} -部分高中生缺乏成语储量,语言表达能力弱,而传统记背成语方法缺乏枯燥,使得高中生反感成语。 +\subsection{研究背景} -我们意识到成语作为中国文化的精华之一,逐渐成为在我们身边却又被忽视的语言资源。 +在 IPv4 地址资源日渐枯竭的背景下,IPv6 被誉为“互联网的未来”。 -\section{研究目的} +最早开发互联网的几个发达国家抢占了先机,并占有大量 IPv4 资源,为其互联网发展铺平了道路,却形成了垄断;众多发展中国家希望用IP协议技术的革新弥补差距。 +IPv6第一版协议标准(RFC1883)早在1995年就已发布,由于IPv4存量设备规模大,IPv6升级难度大,直到进入千禧年后IPv4地址分配枯竭这一迫在眉睫的问题出现后,世界各国才纷纷计划部署IPv6。 -为用户提供成语学习相关资源,提高效率,发挥个人主观能动性。 +我国着眼于未来,积极参与 IPv6 部署,中国教育和科研计算机网 CERNET2 已经成为全球最大的纯 IPv6 网络之一,国内三大运营商也已在全国范围内的主要城市完成了 IPv6 部署。 -\section{研究意义} +但是大多国内网民对 IPv6 技术很陌生,甚至并不了解自己是否正在使用IPv6。 -成语是我国汉语词汇里浓墨重彩的一笔,本应用有利于增添成语学习的趣味性,激发使用者对文学和语言的兴趣,提升使用者对成语典故的理解和运用能力,使其通过成语了解和传承中华民族的民族心理、民族文化和历史走向。 +\subsection{研究目的} -整个研发过程让开发者的创造性思维得以展现,从分析研究成语的特点,到开发成语接龙的高效算法,我们注重思维的碰撞,小组成员进行了大量研究。 +截至2023年12月,我国网民规模达10.92亿人\cite{53rd_statistical_report}; +至2024年5月,IPv6 活跃用户数达7.94亿人\cite{china_whitepaper_on_the_development_of_IPv6}。 +这些数字十分喜人,表明我国的网络技术更新正在进步。 +但随之引来的问题却很多,因为缺乏对技术的宣传,一些网民可能“还未准备好”。 +运营商静默更新 IPv6,不少用户端设备未更新,导致安全性问题甚至直接使设备无法使用。 +为探究中国 IPv6 部署现状,为其发展贡献一些微小的力量,我们以此为题进行研究。 -小组成员通过该项活动把日常学习生活中的所思所感融会贯通,展示了自己的想法和风格。 +\subsection{研究意义} -\section{关于“一个顶俩”} +本研究致力于宣传IPv6知识,引发人们对IPv6的关注。 -我们选取“一个顶俩”作为项目名,有以下原因: +本项目衍生网站ipv6-test可用于测试IPv6连通性状况,也在网站上提供IPv6相关学习资源。 -\begin{itemize} - \item “一个顶俩”末拼音为“lia”,没有成语以“lia”为首拼音,即“一个顶俩”可以作为成语接龙的“终点”。 - \item “一个顶俩”十分具有震慑力而不失幽默,十分符合本项目组长的气质。 - \item “一个顶俩”意为“一个人做事有效果,一个人能代替两个人”,十分符合小组成员董子豪的能力。 -\end{itemize} +为履行本研究科普作用,本研究报告特些收集一些关于IPv6的问题,并在最后一章节《常见问题》解答。 +\section{中国IPv6历史发展} -\section{技术栈} +\subsection{起步期} -\subsection{后端} +起步期(2017年至2018年中):在这一阶段,IPv6的推广和应用刚刚起步。 +各云服务商、软件开发企业开始着手进行网络及相关内容的IPv6升级。 +此时期的典型案例是,2018年6月20日,中国最大的云计算服务商阿里云宣布支持IPv6。 -基于 \href{https://go.dev/}{Golang},使用高性能Web框架Echo开发后端服务器。 +\subsection{爬升期} -基于 \href{https://github.com/hashicorp/go-memdb}{go-memdb} 内存数据库项目,我们能够将30895条成语数据在内存数据库中索引并高效查询。 +爬升期(2018年中至2023年一季度):2019年,工业和信息化部《IPv6网络就绪专项行动》的开展,以及2020年《IPv6端到端贯通能力提升专项行动》的实施,为IPv6的普及提供了政策支持和技术指导。 +此阶段主要改造对象在于移动互联网用户,由于中国广大的移动互联网用户,可观察到IPv6用户树大幅上升。 +许多中小企业也在得到政策支持后相继升级至IPv6。 -\subsection{前端} +\subsection{稳定期} -基于 \href{https://cn.vuejs.org/}{Vue.js 3} JavaScript 框架,使用TypeScript语言进行动态内容展示、用户交互体验、数据处理等操作。 - -基于 \href{https://www.naiveui.com/zh-CN/os-theme}{Naive UI} 前端框架,使用部分组件,提高开发效率,美化UI。 - -使用 \href{https://unocss.dev/}{UnoCSS} 原子化 CSS 框架,便于样式调整,提升代码可读性与开发效率。 - -使用 \href{https://cn.vitejs.dev/}{Vite 5} 构建项目,打包前端代码。 - -\subsection{部署} - -基于 \href{https://www.docker.com/}{Docker} 容器化技术,构建前端与后端项目的镜像后,使用 \href{https://github.com/docker/compose}{Docker Compose} 技术管理容器并部署。 \ No newline at end of file +稳定期(2023年一季度至今):由于移动互联网用户IPv6改造基本完成,此阶段的工作重心移动至固定宽带互联网用户。 +由于固定宽带用户分散,各种网络接入设备不一,部分宽带用户可静默升级,还有较多用户必须在硬件上升级。 +这给运营商带来了不小的成本,发展速度有所放缓。 diff --git a/main.tex b/main.tex index 074e917..654a99a 100644 --- a/main.tex +++ b/main.tex @@ -3,10 +3,15 @@ \begin{document} \maketitle + +\frontmatter \tableofcontents \mainmatter \input{chapters/intro.tex} +\input{chapters/about-ipv6.tex} + +\bibliography{ref/refs} \backmatter \input{chapters/acknowledgements.tex} diff --git a/thesis.cls b/thesis.cls index a11ed39..49abe1a 100644 --- a/thesis.cls +++ b/thesis.cls @@ -74,13 +74,13 @@ \kvsetkeys{ustc@key}{#1}% } \kv@set@family@handler{ustc@key}{% -% -% \cs{ustcsetup} 会将 \meta{value} 存到 \cs{ustc@\meta{key}}, -% 但是宏的名字包含 “-” 这样的特殊字符时不方便直接调用,比如 |key = math-style|, -% 这时可以用 |name| 设置 \meta{key} 的别称,比如 |key = math@style|, -% 这样就可以通过 \cs{ustc@math@style} 来引用。 -% |default| 是定义该 \meta{key} 时默认的值,缺省为空。 -% + % + % \cs{ustcsetup} 会将 \meta{value} 存到 \cs{ustc@\meta{key}}, + % 但是宏的名字包含 “-” 这样的特殊字符时不方便直接调用,比如 |key = math-style|, + % 这时可以用 |name| 设置 \meta{key} 的别称,比如 |key = math@style|, + % 这样就可以通过 \cs{ustc@math@style} 来引用。 + % |default| 是定义该 \meta{key} 时默认的值,缺省为空。 + % \@namedef{ustc@#1@@name}{#1}% \def\ustc@@default{}% \def\ustc@@choices{}% @@ -158,192 +158,192 @@ \ustc@define@key{ degree = { - choices = { - doctor, - master, - bachelor, + choices = { + doctor, + master, + bachelor, + }, + default = doctor, }, - default = doctor, - }, degree-type = { - name = degree@type, - choices = { - academic, - professional, + name = degree@type, + choices = { + academic, + professional, + }, + default = academic, }, - default = academic, - }, main-language = { - name = main@language, - choices = { - chinese, - english, + name = main@language, + choices = { + chinese, + english, + }, + default = chinese, }, - default = chinese, - }, language = { - choices = { - chinese, - english, + choices = { + chinese, + english, + }, + default = chinese, }, - default = chinese, - }, system = { - choices = { - auto, - mac, - unix, - windows, + choices = { + auto, + mac, + unix, + windows, + }, + default = auto, }, - default = auto, - }, fontset = { - choices = { - auto, - windows, - mac, - ubuntu, - fandol, - none, + choices = { + auto, + windows, + mac, + ubuntu, + fandol, + none, + }, + default = auto, }, - default = auto, - }, font = { - choices = { - auto, - times, - termes, - stix, - xits, - libertinus, - newcm, - lm, - newtx, - none, + choices = { + auto, + times, + termes, + stix, + xits, + libertinus, + newcm, + lm, + newtx, + none, + }, + default = auto, }, - default = auto, - }, cjk-font = { - name = cjk@font, - choices = { - auto, - windows, - mac, - noto, - fandol, - none, + name = cjk@font, + choices = { + auto, + windows, + mac, + noto, + fandol, + none, + }, + default = auto, }, - default = auto, - }, math-font = { - name = math@font, - choices = { - auto, - stix, - xits, - libertinus, - newcm, - cm, - lm, - newtx, - none, + name = math@font, + choices = { + auto, + stix, + xits, + libertinus, + newcm, + cm, + lm, + newtx, + none, + }, + default = auto, }, - default = auto, - }, math-style = { - name = math@style, - choices = { - GB, - ISO, - TeX, + name = math@style, + choices = { + GB, + ISO, + TeX, + }, }, - }, uppercase-greek = { - name = uppercase@greek, - choices = { - italic, - upright, + name = uppercase@greek, + choices = { + italic, + upright, + }, }, - }, less-than-or-equal = { - name = leq, - choices = { - slanted, - horizontal, + name = leq, + choices = { + slanted, + horizontal, + }, }, - }, integral = { - choices = { - upright, - slanted, + choices = { + upright, + slanted, + }, }, - }, integral-limits = { - name = integral@limits, - choices = { - true, - false, + name = integral@limits, + choices = { + true, + false, + }, }, - }, partial = { - choices = { - upright, - italic, + choices = { + upright, + italic, + }, }, - }, math-ellipsis = { - name = math@ellipsis, - choices = { - centered, - lower, - AMS, + name = math@ellipsis, + choices = { + centered, + lower, + AMS, + }, }, - }, real-part = { - name = real@part, - choices = { - roman, - fraktur, + name = real@part, + choices = { + roman, + fraktur, + }, }, - }, cite-style = { - name = cite@style, - choices = { - super, - inline, - authoryear, + name = cite@style, + choices = { + super, + inline, + authoryear, + }, }, - }, output = { - choices = { - print, - electronic, + choices = { + print, + electronic, + }, + default = print, }, - default = print, - }, section-style = { - name = section@style, - choices = { - chinese, - arabic, + name = section@style, + choices = { + chinese, + arabic, + }, + default = chinese, }, - default = chinese, - }, badge-color = { - name = badge@color, - choices = { - blue, - black, + name = badge@color, + choices = { + blue, + black, + }, + default = blue, }, - default = blue, - }, reviewer = { - choices = { - true, - false, + choices = { + true, + false, + }, + default = false, }, - default = false, - }, } % 将 \ustc@cite@style 置空方便后续进行判断。 @@ -654,7 +654,7 @@ \fi \normalsize \ifx\MakeRobust\@undefined \else - \MakeRobust\normalsize + \MakeRobust\normalsize \fi } \ustc@set@font@size @@ -1635,57 +1635,57 @@ % 定义用户接口: \ustc@define@key{ title = { - default = {论文题目}, - }, + default = {论文题目}, + }, class = { - default = {所属班级}, - }, + default = {所属班级}, + }, author = { - default = {作者姓名}, - }, + default = {作者姓名}, + }, speciality = { - default = {专业}, - }, + default = {专业}, + }, speciality* = { - default = {Speciality}, - name = speciality@en, - }, + default = {Speciality}, + name = speciality@en, + }, supervisor = { - default = {导师姓名}, - }, + default = {导师姓名}, + }, advisor = { - default = {}, - }, + default = {}, + }, advisor* = { - default = {}, - name = advisor@en, - }, + default = {}, + name = advisor@en, + }, date = { - default = {\the\year-\two@digits{\month}-\two@digits{\day}}, - }, + default = {\the\year-\two@digits{\month}-\two@digits{\day}}, + }, professional-type = { - name = professional@type, - }, + name = professional@type, + }, professional-type* = { - name = professional@type@en, - }, + name = professional@type@en, + }, department, student-id = { - name = student@id, - }, + name = student@id, + }, secret-level = { - name = secret@level, - }, + name = secret@level, + }, secret-level* = { - name = secret@level@en, - }, + name = secret@level@en, + }, secret-year = { - name = secret@year, - }, + name = secret@year, + }, keywords, keywords* = { - name = keywords@en, - }, + name = keywords@en, + }, } @@ -1720,7 +1720,7 @@ \def\ustc@define@term#1#2{% \expandafter\gdef\csname #1\endcsname##1{% \ustcsetup{#2 = {##1}}% - }% +}% } \ustc@define@term{title}{title} \ustc@define@term{entitle}{title*} @@ -1812,22 +1812,22 @@ \raggedleft\fangsong\fontsize{14bp}{14bp}\selectfont \null\ustc@secret@level\par}\par \vskip 0.5cm% - \includegraphics[height=1.3cm]{figures/logo-left.png}\par + \includegraphics[height=1.3cm]{figures/logo.pdf}\par \vskip 0.6cm% - {\sffamily\fontsize{56bp}{56bp}\selectfont - \ustc@thesis@name\par}% + {\sffamily\fontsize{56bp}{56bp}\selectfont + \ustc@thesis@name\par}% \ifustc@degree@type@academic \vskip 2.0cm% \else \vskip 0.8cm% \begingroup - \fontsize{26bp}{26bp}\selectfont - \ifx\ustc@professional@type\@empty - \null - \else - \lishu (\ustc@professional@type )% - \fi - \par + \fontsize{26bp}{26bp}\selectfont + \ifx\ustc@professional@type\@empty + \null + \else + \lishu (\ustc@professional@type )% + \fi + \par \endgroup \vskip 1.0cm% \fi @@ -1842,13 +1842,13 @@ \centering\sffamily\bfseries\fontsize{26bp}{50bp}\selectfont \ustc@title\par}\par \vskip 0.6cm% - {\fontsize{16bp}{31bp}\selectfont - \begin{tabular}{@{}l@{\hspace{\ccwd}}l@{}}% - \textsf{所属班级:} & \ustc@class \\ - \textsf{作者姓名:} & \ustc@author \\ - \textsf{指导教师:} & \ustc@supervisor \\ - \textsf{完成时间:} & \ustc@date@zh@big - \end{tabular}\par}% + {\fontsize{16bp}{31bp}\selectfont + \begin{tabular}{@{}l@{\hspace{\ccwd}}l@{}}% + \textsf{所属班级:} & \ustc@class \\ + \textsf{作者姓名:} & \ustc@author \\ + \textsf{指导教师:} & \ustc@supervisor \\ + \textsf{完成时间:} & \ustc@date@zh@big + \end{tabular}\par}% \end{titlepage}% \ustc@reset@main@language } @@ -1895,26 +1895,26 @@ \DeclareRobustCommand\ustc@spacetitle[1]{% \ustc@titlelength=\csname str_count:N\endcsname{#1}% \begingroup - \ifustc@degree@graduate + \ifustc@degree@graduate + \ifcase\ustc@titlelength + \or\or + \ziju{2}% + \or + \ziju{1}% + \or + \ziju{0.5}% + \fi + \else + \if@mainmatter\else \ifcase\ustc@titlelength \or\or - \ziju{2}% - \or \ziju{1}% - \or + \or\or \ziju{0.5}% \fi - \else - \if@mainmatter\else - \ifcase\ustc@titlelength - \or\or - \ziju{1}% - \or\or - \ziju{0.5}% - \fi - \fi \fi - #1% + \fi + #1% \endgroup } @@ -1947,7 +1947,7 @@ beforeskip = 24bp, afterskip = 18bp, fixskip = true, - }, + }, } % 一级节标题:黑体 14 磅左顶格,单倍行距,段前 24 磅,段后 6 磅, @@ -1958,52 +1958,52 @@ aftername = \hspace{\ccwd}, beforeskip = 24bp, afterskip = 6bp, - }, + }, % % 二级节标题:黑体 13 磅,左缩进两字,单倍行距,段前 12 磅,段后 6 磅, % 序号与题名间空一字。 subsection = { - format = \sffamily\fontsize{13bp}{21.67bp}\selectfont, - aftername = \hspace{\ccwd}, - indent = 2\ccwd, - beforeskip = 12bp, - afterskip = 6bp, - }, + format = \sffamily\fontsize{13bp}{21.67bp}\selectfont, + aftername = \hspace{\ccwd}, + indent = 2\ccwd, + beforeskip = 12bp, + afterskip = 6bp, + }, % % 三级及以下节标题的格式没有具体规定,按照 Word 模板的格式: % 使用黑体 12 磅,左缩进两字,行距 20 磅,段前段后 0 磅,序号与题名间空半字宽。 subsubsection = { - format = \sffamily\fontsize{12bp}{20bp}\selectfont, - number = \arabic{subsubsection}, - aftername = .\hspace{0.5\ccwd}, - indent = 2\ccwd, - beforeskip = \z@, - afterskip = \z@, - }, + format = \sffamily\fontsize{12bp}{20bp}\selectfont, + number = \arabic{subsubsection}, + aftername = .\hspace{0.5\ccwd}, + indent = 2\ccwd, + beforeskip = \z@, + afterskip = \z@, + }, % % 按照 Word 模板的格式,四级节标题:宋体 12 磅,左缩进两字,行距 20 磅, % 段前段后 0 磅,序号使用全宽括号,与题名间空半字宽。 paragraph = { - format = \rmfamily\fontsize{12bp}{20bp}\selectfont, - number = (\arabic{paragraph}), - aftername = \hspace{0.5\ccwd}, - indent = 2\ccwd, - beforeskip = \z@, - afterskip = \z@, - runin = false, - }, + format = \rmfamily\fontsize{12bp}{20bp}\selectfont, + number = (\arabic{paragraph}), + aftername = \hspace{0.5\ccwd}, + indent = 2\ccwd, + beforeskip = \z@, + afterskip = \z@, + runin = false, + }, % % 按照 Word 模板的格式,五级节标题:宋体 12 磅,左缩进两字,行距 20 磅, % 段前段后 0 磅,序号使用全宽括号,与题名间空半字宽。 subparagraph = { - format = \rmfamily\fontsize{12bp}{20bp}\selectfont, - number = \ustc@textcircled{subparagraph}, - aftername = \hspace{0.5\ccwd}, - indent = 2\ccwd, - beforeskip = \z@, - afterskip = \z@, - runin = false, - }, + format = \rmfamily\fontsize{12bp}{20bp}\selectfont, + number = \ustc@textcircled{subparagraph}, + aftername = \hspace{0.5\ccwd}, + indent = 2\ccwd, + beforeskip = \z@, + afterskip = \z@, + runin = false, + }, } \ifustc@degree@bachelor @@ -2023,37 +2023,37 @@ \ifustc@degree@bachelor \setcounter{secnumdepth}{4} \ctexset{ - % - % 论文的致谢、目录、摘要和参考文献等标题用小二号(18 bp)黑体字,居中, - % 这通过 \cs{if@mainmatter} 区分。 - % 正文中的标题分章、节、段三级;章、节标题居中,段标题居左, - % 分别用三号(16 bp)黑体、小三(15 bp)黑体、四号(14 bp)黑体。 + % + % 论文的致谢、目录、摘要和参考文献等标题用小二号(18 bp)黑体字,居中, + % 这通过 \cs{if@mainmatter} 区分。 + % 正文中的标题分章、节、段三级;章、节标题居中,段标题居左, + % 分别用三号(16 bp)黑体、小三(15 bp)黑体、四号(14 bp)黑体。 chapter = { format = { - \centering\sffamily - \if@mainmatter - \fontsize{16bp}{29.33bp}\selectfont - \else - \fontsize{18bp}{33bp}\selectfont - \fi - }, - }, + \centering\sffamily + \if@mainmatter + \fontsize{16bp}{29.33bp}\selectfont + \else + \fontsize{18bp}{33bp}\selectfont + \fi + }, + }, section = { format = \centering\sffamily\fontsize{15bp}{27.5bp}\selectfont, - }, + }, subsection = { - format = \sffamily\fontsize{14bp}{25.67bp}\selectfont, - indent = \z@, - }, + format = \sffamily\fontsize{14bp}{25.67bp}\selectfont, + indent = \z@, + }, subsubsection = { - format = \rmfamily\fontsize{12bp}{22bp}\selectfont, - indent = \ccwd, - }, + format = \rmfamily\fontsize{12bp}{22bp}\selectfont, + indent = \ccwd, + }, paragraph = { - format = \rmfamily\fontsize{12bp}{22bp}\selectfont, - aftername = {}, - indent = \ccwd, - }, + format = \rmfamily\fontsize{12bp}{22bp}\selectfont, + aftername = {}, + indent = \ccwd, + }, } % % 本科生的阿拉伯数字式标题的格式与研究生几乎一致,只有中文数字式需要修改。 @@ -2061,15 +2061,15 @@ \ctexset{ chapter = { number = \chinese{chapter}, - }, + }, section = { name = {第,节}, number = \chinese{section}, - }, + }, subsection = { - number = \chinese{subsection}, - aftername = {、}, - }, + number = \chinese{subsection}, + aftername = {、}, + }, } \fi \fi @@ -2127,9 +2127,9 @@ \ustc@chapter[Abstract]{ABSTRACT}% \else \begingroup - % 本科生的英文摘要使用小二号衬线体 - \ctexset{chapter/format=\centering\fontsize{18bp}{33bp}\selectfont}% - \ustc@chapter{ABSTRACT}% + % 本科生的英文摘要使用小二号衬线体 + \ctexset{chapter/format=\centering\fontsize{18bp}{33bp}\selectfont}% + \ustc@chapter{ABSTRACT}% \endgroup \fi }{ @@ -2147,7 +2147,7 @@ % Reserved for compatibility until 2020-07-01. \newenvironment{enabstract}{% \begin{abstract*}% -}{% + }{% \end{abstract*}% } @@ -2159,7 +2159,6 @@ \renewcommand\tableofcontents{% \ustc@chapter{\contentsname}% \@starttoc{toc}% - \thispagestyle{empty} } % 下面用 \pkg{titletoc} 宏包设置目录内容的格式。 @@ -2177,41 +2176,41 @@ % 但是 Word 模板中实际是行距 20 磅。 \ifustc@degree@graduate \titlecontents{chapter} - [\z@]{\addvspace{6bp}\fontsize{14bp}{20bp}\selectfont} - {\contentspush{\thecontentslabel\hspace{\ccwd}}}{} - {\fontsize{12bp}{20bp}\selectfont\ustc@leaders\thecontentspage} - % - % 一级节标题目录要求宋体 12 磅,单倍行距,左缩进一字,段前 6 磅,段后 0 磅, - % 两端对齐,页码右对齐,序号与题名间空一字。 - % Word 模板中实际是行距 20 磅,段前 0 磅。 + [\z@]{\addvspace{6bp}\fontsize{14bp}{20bp}\selectfont} + {\contentspush{\thecontentslabel\hspace{\ccwd}}}{} + {\fontsize{12bp}{20bp}\selectfont\ustc@leaders\thecontentspage} + % + % 一级节标题目录要求宋体 12 磅,单倍行距,左缩进一字,段前 6 磅,段后 0 磅, + % 两端对齐,页码右对齐,序号与题名间空一字。 + % Word 模板中实际是行距 20 磅,段前 0 磅。 \titlecontents{section} - [\ccwd]{\fontsize{12bp}{20bp}\selectfont} - {\contentspush{\thecontentslabel\hspace{\ccwd}}}{} - {\ustc@leaders\thecontentspage} - % - % 二级节标题目录要求仿宋 12 磅,单倍行距,左缩进两字,段前 6 磅,段后 0 磅, - % 两端对齐,页码右对齐,序号与题名间空一字。 - % Word 模板中实际是行距 20 磅,段前 0 磅。 + [\ccwd]{\fontsize{12bp}{20bp}\selectfont} + {\contentspush{\thecontentslabel\hspace{\ccwd}}}{} + {\ustc@leaders\thecontentspage} + % + % 二级节标题目录要求仿宋 12 磅,单倍行距,左缩进两字,段前 6 磅,段后 0 磅, + % 两端对齐,页码右对齐,序号与题名间空一字。 + % Word 模板中实际是行距 20 磅,段前 0 磅。 \titlecontents{subsection} - [2\ccwd]{\fangsong\fontsize{12bp}{20bp}\selectfont} - {\contentspush{\thecontentslabel\hspace{\ccwd}}}{} - {\ustc@leaders\thecontentspage} - % - % 本科生的目录使用小四宋体(同正文字体),其他同研究生的格式相近。 + [2\ccwd]{\fangsong\fontsize{12bp}{20bp}\selectfont} + {\contentspush{\thecontentslabel\hspace{\ccwd}}}{} + {\ustc@leaders\thecontentspage} + % + % 本科生的目录使用小四宋体(同正文字体),其他同研究生的格式相近。 \else \titlecontents{chapter} - [\z@]{\normalsize} - {\contentspush{\thecontentslabel\unskip\hspace{\ccwd}}}{} - {\ustc@leaders\thecontentspage} + [\z@]{\normalsize} + {\contentspush{\thecontentslabel\unskip\hspace{\ccwd}}}{} + {\ustc@leaders\thecontentspage} \titlecontents{section} - [\ccwd]{\normalsize} - {\contentspush{\thecontentslabel\hspace{\ccwd}}}{} - {\ustc@leaders\thecontentspage} + [\ccwd]{\normalsize} + {\contentspush{\thecontentslabel\hspace{\ccwd}}}{} + {\ustc@leaders\thecontentspage} \titlecontents{subsection} - [2\ccwd]{\normalsize} - {\contentspush{\thecontentslabel + [2\ccwd]{\normalsize} + {\contentspush{\thecontentslabel \ifustc@section@style@arabic\hspace{\ccwd}\else 、\fi}}{} - {\ustc@leaders\thecontentspage} + {\ustc@leaders\thecontentspage} \fi % 本科生要求目录中正文每章前多空一行,而目录、附录等章则不需要空行, @@ -2237,7 +2236,7 @@ \fi \fi \secdef\@chapter\@schapter -} + } % 研究生要求图、表的清单须另页起。 \newlength{\ustc@lof@label@width} @@ -2245,13 +2244,13 @@ \settowidth{\ustc@lof@label@width}{\figurename~9.99}% \addtolength{\ustc@lof@label@width}{1em}% \titlecontents{figure}% - [\ustc@lof@label@width]{\normalsize}% - {\contentslabel[\figurename~\thecontentslabel]{\ustc@lof@label@width}}{}% - {\ustc@leaders\thecontentspage}% + [\ustc@lof@label@width]{\normalsize}% + {\contentslabel[\figurename~\thecontentslabel]{\ustc@lof@label@width}}{}% + {\ustc@leaders\thecontentspage}% \titlecontents{table}% - [\ustc@lof@label@width]{\normalsize}% - {\contentslabel[\tablename~\thecontentslabel]{\ustc@lof@label@width}}{}% - {\ustc@leaders\thecontentspage}% + [\ustc@lof@label@width]{\normalsize}% + {\contentslabel[\tablename~\thecontentslabel]{\ustc@lof@label@width}}{}% + {\ustc@leaders\thecontentspage}% } \ustc@set@lof@format \ustc@option@hook{main-language}{\ustc@set@lof@format} @@ -2330,9 +2329,9 @@ \def\UrlBreaks{% \do\/% \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\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% + \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% \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9\do=\do/\do.\do:% \do\*\do\-\do\~\do\'\do\"\do\-} \Urlmuskip=0mu plus 0.1mu @@ -2350,8 +2349,8 @@ \kern-3\p@ \hrule\@width.25\textwidth \kern2.6\p@} - % - % 注文缩进两字: +% +% 注文缩进两字: \renewcommand\@makefntext[1]{% \parindent 2\ccwd\relax \noindent @@ -2369,17 +2368,17 @@ \itemsep0\p@ \@plus.2\p@ } \def\@listi{\leftmargin\leftmargini - \ustc@nolistsep} + \ustc@nolistsep} \let\@listI\@listi \@listi \def\@listii {\leftmargin\leftmarginii - \labelwidth\leftmarginii - \advance\labelwidth-\labelsep - \ustc@nolistsep} + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \ustc@nolistsep} \def\@listiii{\leftmargin\leftmarginiii - \labelwidth\leftmarginiii - \advance\labelwidth-\labelsep - \ustc@nolistsep} + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \ustc@nolistsep} % \subsection{浮动体} @@ -2443,43 +2442,43 @@ % \url{https://tex.stackexchange.com/a/40363/82731}。 % \begin{macrocode} \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}% - {}{\ustc@patch@error{\@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}% +{}{\ustc@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}% - {}{\ustc@patch@error{\@addtocurcol}} +{\vskip\intextsep \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi}% +{\ifnum\outputpenalty <-\@Mii + \aftergroup\vskip\aftergroup\intextsep + \aftergroup\nointerlineskip + \else + \vskip\intextsep + \fi}% +{}{\ustc@patch@error{\@addtocurcol}} \patchcmd{\@getpen}{\@M}{\@Mi} - {}{\ustc@patch@error{\@getpen}} +{}{\ustc@patch@error{\@getpen}} % 新定义了 \cs{note} 来生成图表的附注。 % 如果用 \cs{caption} 生成图表的附注会导致图表的序号有误; % 如果用 \cs{bicaption} 会导致表注无法置于表后,而且对齐方式不对。 \newcommand\note[1]{% \begingroup - \captionsetup{ - font = ustc, - margin = 2\ccwd, - position = bottom, - }% - \caption*{#1}% + \captionsetup{ + font = ustc, + margin = 2\ccwd, + position = bottom, + }% + \caption*{#1}% \endgroup } @@ -2510,93 +2509,91 @@ \PassOptionsToPackage{compress}{natbib} \AtEndOfPackageFile*{natbib}{ - % 定义几种引用文献的标注样式。 - \newcommand\bibstyle@super{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} - \newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{,}} - \newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}} - \@namedef{bibstyle@author-year}{\bibstyle@authoryear} - % - % 几种种引用样式,与 \file{bst} 文件名保持一致, - % 这样在使用 \cs{bibliographystyle} 选择参考文献表的样式时也会设置对应的引用样式。 - \@namedef{bibstyle@ustcthesis-numerical}{\bibstyle@super} - \@namedef{bibstyle@ustcthesis-authoryear}{\bibstyle@authoryear} - \@namedef{bibstyle@ustcthesis-bachelor}{\bibstyle@super} - % - % 如果载入 `natbib` 前设置了 `cite-style`,这里先进行配置。 - % https://github.com/ustctug/ustcthesis/issues/327 - \ifx\ustc@cite@style\@empty\else - \citestyle{\ustc@cite@style}% +% 定义几种引用文献的标注样式。 +\newcommand\bibstyle@super{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} +\newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{,}} +\newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}} +\@namedef{bibstyle@author-year}{\bibstyle@authoryear} +% +% 几种种引用样式,与 \file{bst} 文件名保持一致, +% 这样在使用 \cs{bibliographystyle} 选择参考文献表的样式时也会设置对应的引用样式。 +\@namedef{bibstyle@thesis-numerical}{\bibstyle@super} +% +% 如果载入 `natbib` 前设置了 `cite-style`,这里先进行配置。 +% https://github.com/ustctug/ustcthesis/issues/327 +\ifx\ustc@cite@style\@empty\else + \citestyle{\ustc@cite@style}% +\fi +% +% 定义接口 cite-style 切换引用样式。 +\ustc@option@hook{cite-style}{% + \citestyle{\ustc@cite@style}% +} +% +% 如果文献序号作为叙述文字的一部分,需要临时将文献序号与正文平排 +\DeclareRobustCommand\inlinecite{\@inlinecite} +\def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup} +% +% 修改引用的样式。 +% 这里在 filehook 中无法使用 \cs{patchcmd},所以只能手动重定义。 +% +% 将 super 式 \cs{citep} 引用的页码置于括号外。 +\renewcommand\NAT@citesuper[3]{% + \ifNAT@swa + \if*#2*\else + #2\NAT@spacechar \fi - % - % 定义接口 cite-style 切换引用样式。 - \ustc@option@hook{cite-style}{% - \citestyle{\ustc@cite@style}% - } - % - % 如果文献序号作为叙述文字的一部分,需要临时将文献序号与正文平排 - \DeclareRobustCommand\inlinecite{\@inlinecite} - \def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup} - % - % 修改引用的样式。 - % 这里在 filehook 中无法使用 \cs{patchcmd},所以只能手动重定义。 - % - % 将 super 式 \cs{citep} 引用的页码置于括号外。 - \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 - } - % - % 将 numbers 式 \cs{citep} 引用的页码置于括号外并改为上标。 - \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 - } - % - % 在 filehook 中无法使用 \cs{patchcmd},所以只能手动重定义。 - \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 + % \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 +} +% +% 将 numbers 式 \cs{citep} 引用的页码置于括号外并改为上标。 +\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 +} +% +% 在 filehook 中无法使用 \cs{patchcmd},所以只能手动重定义。 +\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}% + \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}{}}{}% + \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 @@ -2606,214 +2603,214 @@ \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}% }{% \@ifnum{\NAT@cmprs>\z@}{% - \NAT@ifcat@num\NAT@num + \NAT@ifcat@num\NAT@num {\let\NAT@nm=\NAT@num}% {\def\NAT@nm{-2}}% - \NAT@ifcat@num\NAT@last@num + \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}{% - % 在顺序编码制下,\pkg{natbib} 只有在三个以上连续文献引用才会使用连接号, - % 这里修改为允许两个引用使用连接号。 - % 参考 https://tex.stackexchange.com/a/86991/82731 。 - % - % \ifx\NAT@last@yr\relax - % \def@NAT@last@yr{\@citea}% - % \else - % \def@NAT@last@yr{--\NAT@penalty}% - % \fi - \def@NAT@last@yr{-\NAT@penalty}% + \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}% }{% - \NAT@last@yr@mbox + \advance\@tempcnta by\@ne + \@ifnum{\NAT@nm=\@tempcnta}{% + % 在顺序编码制下,\pkg{natbib} 只有在三个以上连续文献引用才会使用连接号, + % 这里修改为允许两个引用使用连接号。 + % 参考 https://tex.stackexchange.com/a/86991/82731 。 + % + % \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 + \@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 + \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 - % 将 numerical 式 \cs{citet} 引用的页码置于括号外并改为上标。 - % - % \@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 + }% + \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}% + \ifNAT@swa\else + % 将 numerical 式 \cs{citet} 引用的页码置于括号外并改为上标。 + % + % \@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 - }{#1}{#2}% - }% - % - % 将 author-year 式 \cs{citep} 引用的页码置于括号外并改为上标: - \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} - % - % 调整 author-year 式 \cs{citet} 引用的页码。 - \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 + }{}% + \NAT@super@kern + \fi + }{#1}{#2}% +}% +% +% 将 author-year 式 \cs{citep} 引用的页码置于括号外并改为上标: +\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} +% +% 调整 author-year 式 \cs{citet} 引用的页码。 +\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}% + \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}{}}{}% + \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}% + \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 - \unskip\NAT@spacechar - \NAT@hyper@{\NAT@date}% + \@citea\NAT@hyper@{% + \NAT@nmfmt{\NAT@nm}% + \hyper@natlinkbreak{% + \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb + }% + \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 + \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 - \NAT@def@citea@close + \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 - \fi }}\ifNAT@swa\else - % 将 author-year 式 \cs{citet} 引用的页码置于括号外并改为上标。 - % - % \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}} - % - % 为了将参考文献加入目录和 pdf 书签,重新定义 \pkg{natbib} 的 \cmd{bibsection} - % 另外如果调用了 \pkg{chapterbib} 或者使用了 \opt{sectionbib} 参数, - % 需要使用节标题 \cs{section}。 - \newcommand\ustc@bib@chapter{% - \@mainmatterfalse - \chapter{\bibname}% - }% - \newcommand\ustc@bib@section{% - \begingroup - \ctexset{section/numbering=false}% - \section{\bibname}% - \endgroup - }% - \@ifpackagewith{chapterbib}{sectionbib}{% - \ustc@error{The "sectionbib" option cannot be used with chaperbib if natbib loaded}% - }{}% - \@ifpackageloaded{chapterbib}{% - \let\bibsection\ustc@bib@section + % 将 author-year 式 \cs{citet} 引用的页码置于括号外并改为上标。 + % + % \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}} +% +% 为了将参考文献加入目录和 pdf 书签,重新定义 \pkg{natbib} 的 \cmd{bibsection} +% 另外如果调用了 \pkg{chapterbib} 或者使用了 \opt{sectionbib} 参数, +% 需要使用节标题 \cs{section}。 +\newcommand\ustc@bib@chapter{% + \@mainmatterfalse + \chapter{\bibname}% +}% +\newcommand\ustc@bib@section{% + \begingroup + \ctexset{section/numbering=false}% + \section{\bibname}% + \endgroup +}% +\@ifpackagewith{chapterbib}{sectionbib}{% + \ustc@error{The "sectionbib" option cannot be used with chaperbib if natbib loaded}% +}{}% +\@ifpackageloaded{chapterbib}{% + \let\bibsection\ustc@bib@section +}{% + \@ifxundefined\NAT@sectionbib{% + \let\bibsection\ustc@bib@chapter }{% - \@ifxundefined\NAT@sectionbib{% - \let\bibsection\ustc@bib@chapter - }{% - \let\bibsection\ustc@bib@section - }% + \let\bibsection\ustc@bib@section }% - % - % 参考文献列表格式:宋体 10.5 磅,行距 20 磅,续行缩进两字,左对齐。 - % 本科生依然是小四宋体。 - \renewcommand\bibfont{% - \ifustc@degree@graduate - \fontsize{10.5bp}{20bp}\selectfont - \else - \normalsize - \fi - } - \setlength{\bibsep}{0\p@ \@plus.2\p@} - \renewcommand\@biblabel[1]{[#1]\hfill} - \setlength{\bibhang}{2\ccwd} +}% +% +% 参考文献列表格式:宋体 10.5 磅,行距 20 磅,续行缩进两字,左对齐。 +% 本科生依然是小四宋体。 +\renewcommand\bibfont{% + \ifustc@degree@graduate + \fontsize{10.5bp}{20bp}\selectfont + \else + \normalsize + \fi +} +\setlength{\bibsep}{0\p@ \@plus.2\p@} +\renewcommand\@biblabel[1]{[#1]\hfill} +\setlength{\bibhang}{2\ccwd} } @@ -2847,8 +2844,8 @@ \par \null\par \begingroup - \raggedleft - \ustc@date@zh@short\par + \raggedleft + \ustc@date@zh@short\par \endgroup \fi } @@ -2858,7 +2855,7 @@ % Reserved for compatibility until 2020-07-01. \newenvironment{acknowledgments}{% \begin{acknowledgements}% -}{% + }{% \end{acknowledgements}% } @@ -2956,10 +2953,10 @@ \ifXeTeX \def\HyPL@StorePageLabel#1{% \begingroup - \edef\Hy@tempa{\the\Hy@abspage<<#1>>}% - \immediate\write\@mainaux{% - \string\HyPL@Entry{\Hy@tempa}% - }% + \edef\Hy@tempa{\the\Hy@abspage<<#1>>}% + \immediate\write\@mainaux{% + \string\HyPL@Entry{\Hy@tempa}% + }% \endgroup } \fi @@ -2970,10 +2967,10 @@ \AtEndOfPackageFile*{amsthm}{ \newtheoremstyle{ustcplain} - {}{} - {}{2\ccwd} - {\bfseries}{} - {\ccwd}{} + {}{} + {}{2\ccwd} + {\bfseries}{} + {\ccwd}{} \theoremstyle{ustcplain} % 定义新的定理 \ifustc@language@chinese @@ -3018,10 +3015,10 @@ \pushQED{\qed}% \normalfont \topsep6\p@\@plus6\p@\relax \trivlist - \item\relax\hskip2\ccwd - \textbf{#1} - \hskip\ccwd\ignorespaces - }{% + \item\relax\hskip2\ccwd + \textbf{#1} + \hskip\ccwd\ignorespaces + }{% \popQED\endtrivlist\@endpefalse } \renewcommand\qedsymbol{\ustc@qed} @@ -3058,9 +3055,9 @@ \@starttoc{loa}% } \titlecontents{algocf} - [2.3em]{\normalsize} - {\contentslabel{2.3em}}{} - {\ustc@leaders\contentspage} + [2.3em]{\normalsize} + {\contentslabel{2.3em}}{} + {\ustc@leaders\contentspage} \contentsuse{algocf}{loa} } @@ -3136,8 +3133,8 @@ }{}% \renewcommand\bibsection{% \begingroup - \ctexset{section/numbering=false}% - \section{\bibname}% + \ctexset{section/numbering=false}% + \section{\bibname}% \endgroup } }{}