From b3ec25dc7cd3ecac00b387c84d8dd627d8e2df92 Mon Sep 17 00:00:00 2001 From: Seasoning Date: Mon, 24 Feb 2025 23:23:05 +0800 Subject: [PATCH] modern-cug-thesis:0.2.6 (#1804) --- .../preview/modern-cug-thesis/0.2.6/LICENSE | 21 + .../preview/modern-cug-thesis/0.2.6/README.md | 106 +++ .../0.2.6/layouts/appendix.typ | 28 + .../modern-cug-thesis/0.2.6/layouts/doc.typ | 38 + .../0.2.6/layouts/mainmatter.typ | 243 +++++ .../preview/modern-cug-thesis/0.2.6/lib.typ | 337 +++++++ .../0.2.6/pages/fonts-display-page.typ | 57 ++ .../0.2.6/pages/notation.typ | 35 + .../0.2.6/pages/postgraduate/abstract-en.typ | 54 ++ .../0.2.6/pages/postgraduate/abstract.typ | 67 ++ .../pages/postgraduate/acknowledgement.typ | 22 + .../0.2.6/pages/postgraduate/cover.typ | 1 + .../0.2.6/pages/postgraduate/declaration.typ | 151 +++ .../postgraduate/list-of-defence-commitee.typ | 115 +++ .../postgraduate/list-of-figures-tables.typ | 72 ++ .../0.2.6/pages/postgraduate/outline.typ | 101 ++ .../0.2.6/pages/postgraduate/resume.typ | 127 +++ .../0.2.6/pages/postgraduate/titlepage.typ | 256 +++++ .../0.2.6/template/chapters/chapter1.typ | 72 ++ .../0.2.6/template/chapters/intro.typ | 94 ++ ...1\345\276\275\345\233\276\346\241\210.jpg" | Bin 0 -> 205214 bytes ...\347\244\272\346\204\217\345\233\2761.png" | Bin 0 -> 814309 bytes .../modern-cug-thesis/0.2.6/template/ref.bib | 692 ++++++++++++++ .../0.2.6/template/thesis.typ | 877 ++++++++++++++++++ .../modern-cug-thesis/0.2.6/thumbnail.png | Bin 0 -> 58946 bytes .../modern-cug-thesis/0.2.6/typst.toml | 16 + .../0.2.6/utils/anonymous-info.typ | 16 + .../0.2.6/utils/bilingual-bibliography.typ | 145 +++ .../0.2.6/utils/custom-cuti.typ | 1 + .../0.2.6/utils/custom-heading.typ | 50 + .../0.2.6/utils/custom-numbering.typ | 30 + .../0.2.6/utils/custom-tablex.typ | 1 + .../0.2.6/utils/datetime-display.typ | 36 + .../0.2.6/utils/double-underline.typ | 11 + .../0.2.6/utils/fix-cjk-linebreak.typ | 40 + .../utils/gb-t-7714-2005-numeric-cug.csl | 477 ++++++++++ .../modern-cug-thesis/0.2.6/utils/hline.typ | 4 + .../modern-cug-thesis/0.2.6/utils/indent.typ | 10 + .../0.2.6/utils/invisible-heading.typ | 5 + .../0.2.6/utils/justify-text.typ | 9 + .../0.2.6/utils/number-per-chapter.typ | 21 + .../modern-cug-thesis/0.2.6/utils/str.typ | 37 + .../modern-cug-thesis/0.2.6/utils/style.typ | 39 + .../modern-cug-thesis/0.2.6/utils/unpairs.typ | 8 + .../0.2.6/utils/word-counter.typ | 27 + 45 files changed, 4549 insertions(+) create mode 100644 packages/preview/modern-cug-thesis/0.2.6/LICENSE create mode 100644 packages/preview/modern-cug-thesis/0.2.6/README.md create mode 100644 packages/preview/modern-cug-thesis/0.2.6/layouts/appendix.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/layouts/doc.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/layouts/mainmatter.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/lib.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/fonts-display-page.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/notation.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/abstract-en.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/abstract.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/acknowledgement.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/cover.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/declaration.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/list-of-defence-commitee.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/list-of-figures-tables.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/outline.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/resume.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/titlepage.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/template/chapters/chapter1.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/template/chapters/intro.typ create mode 100644 "packages/preview/modern-cug-thesis/0.2.6/template/images/A-1.1.2\346\240\241\345\276\275\345\233\276\346\241\210.jpg" create mode 100644 "packages/preview/modern-cug-thesis/0.2.6/template/images/\347\244\272\346\204\217\345\233\2761.png" create mode 100644 packages/preview/modern-cug-thesis/0.2.6/template/ref.bib create mode 100644 packages/preview/modern-cug-thesis/0.2.6/template/thesis.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/thumbnail.png create mode 100644 packages/preview/modern-cug-thesis/0.2.6/typst.toml create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/anonymous-info.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/bilingual-bibliography.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/custom-cuti.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/custom-heading.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/custom-numbering.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/custom-tablex.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/datetime-display.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/double-underline.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/fix-cjk-linebreak.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/gb-t-7714-2005-numeric-cug.csl create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/hline.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/indent.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/invisible-heading.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/justify-text.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/number-per-chapter.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/str.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/style.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/unpairs.typ create mode 100644 packages/preview/modern-cug-thesis/0.2.6/utils/word-counter.typ diff --git a/packages/preview/modern-cug-thesis/0.2.6/LICENSE b/packages/preview/modern-cug-thesis/0.2.6/LICENSE new file mode 100644 index 000000000..903895f62 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Seasoning + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/preview/modern-cug-thesis/0.2.6/README.md b/packages/preview/modern-cug-thesis/0.2.6/README.md new file mode 100644 index 000000000..6dac5e521 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/README.md @@ -0,0 +1,106 @@ +# 基于 Typst 的中国地质大学(武汉)学位论文模板 + +**cug-thesis-typst** 适用于中国地质大学(武汉)学位论文模板,具有便捷、简单、实时渲染等特性。欢迎各位同学、校友们前来 [Issues](https://github.com/Rsweater/cug-thesis-typst/issues) 交流学习~ + +![预览](https://cdn.jsdelivr.net/gh/Rsweater/images/img/preview.gif) + +## 为什么考虑 Typst 实现学位论文模板? + +1. 首要是为了学习。看到 Typst 惊人的成长速度,确实有点小激动。Typst 似乎继承了 Markdown、Tex、Wiki 各自的优点于自身。 +2. 本人写文档相对来说较为粗心,使用 Word 模板会忍不住的反复去检查格式是否符合要求。又听说 Latex 写毕业论文可能后面编译一次需要几十秒~~ 虽然这个自己只是听说,但是 LaTex 在线编辑的方式 Overleaf 达到一定的编译时间收费这个是真的,就我小论文都勉强够用。自己使用开源的 Overleaf 搭建的平台功能上总是缺点什么,奈何自己又不懂~ 自己搭建的本地的 Tex 环境随解决了编译时间付费问题。但是涉及到的宏包、环境,前段时间打开突然不能用了,捣鼓半天不知是何原因~ 直至重新装了2024年的 LaTex 环境才重新运行自己的学位论文。 +3. 惊喜的发现 Typst 编译速度真的非常快~ 经过一段时间的了解,发现基本满足制作学位论文的需求,于是乎~就有了这个cug-thesis-typst。 + +## 参考规范 + +- 本科生论文模板参考:[学士学位论文写作规范(2018版)-中国地质大学本科生院](https://bksy.cug.edu.cn/info/1489/1851.htm) +- 研究生论文模板参考:[研究生学位论文写作规范(2015版)-中国地质大学研究生院](https://graduate.cug.edu.cn/info/1062/5671.htm) + +## 模板认可度问题 + +**值得提醒的是**毕竟是民间实现模板,有不被学院认可的可能性~ + +目前已知情况,计算机学院、地信学院对于学位论文要求不是太苛刻。去年计算机学院师兄使用了 Github 的 Latex 模板 [Timozer/CUGThesis: 中国地质大学(武汉)研究生学位论文 TeX 模板](https://github.com/Timozer/CUGThesis) 完成学位论文。 + +而且哈~ 咱们的研究生学位论文写作规范(2015版)似乎要求似乎不是特别苛刻。请自行斟酌~ + +> 小声~ 研究生学位论文写作规范(2015版)似乎还有一处前后矛盾的要求,斯~ + +## 使用方法 + +### Typst 在线编辑 + +本模板已上传 [Typst Universe](https://typst.app/universe),您可以使用 Typst 的官方 Web App 进行编辑。只需要在 [Typst Web App](https://typst.app/) 中的 `Start from template` 里选择 `modern-cug-thesis`,即可从模板创建项目。 + +### 如果你经常使用 VS Code,比较推荐使用这个~ + +**使用步骤**:安装 typst (命令行工具) → VS Code 插件(实时预览、智能提醒),随后就可以准备开始项目了(打开项目文件、撰写论文内容) + +1. **安装 typst :** + + - **macOS:** `brew install typst` + - **Windows:** `winget install --id Typst.Typst -l "D:\bw_ch\toolkits\typst"` +2. **安装插件**:在 VS Code 中安装 [Tinymist Typst](https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist) +3. **准备项目文件**: + + - **方法一:Fork Repo**。去[项目页面](https://github.com/Rsweater/cug-thesis-typst)Fork ,随后使用命令 `git clone https://github.com//cug-thesis-typst.git` 将整个项目克隆到本地,寻找 `template/thesis.typ`。 + - **方法二:使用 Typst Packages**。按下 `Ctrl + Shift + P` 打开命令界面,输入 `Typst: Show available Typst templates (gallery) for picking up a template` 打开 Tinymist 提供的 Template Gallery,然后从里面找到 `cug-thesis`,点击 `❤` 按钮进行收藏,以及点击 `+` 号,就可以创建对应的论文模板了,会出现 `ref.bib` 以及 `thesis.typ`。 +4. 打开开始编写论文内容~ + +**版本提醒:** 请确保本地已安装 Typst,**推荐使用最新版本。** 下面是推荐的 Typst、VS Code 插件与模板版本的对应关系: + +> 如果是Typst 0.12.0 版本的老用户,仅仅需要在命令行使用 `typst update`即可。其中,VS Code插件版本也需要对应,建议设置为自动更新插件。 + +| Typst 版本 | 模板版本 | Tinymist Typst插件 | 主要更新内容 | +| :--------: | :------: | :----------------: | :----------------------------------------------------------: | +| 0.13.0 | 0.2.6 | 0.12.21 | 最后一个已知问题:
首段首行缩进对于标题垂直间距产生影响 | +| 0.12.0 | 0.2.5 | 0.12.19 | 第一个比较完善的版本 | + +## Q&A + +### 使用这个模板需要了解些什么? + +需要掌握一些 Markdown Like 标记用来编写文档,了解文章大致结构即可【见 `template\thesis.typ` 中介绍】。 + +**参考资料:** + +- 官网Tutorial:[Writing in Typst – Typst Documentation](https://typst.app/docs/tutorial/writing-in-typst/)、[Tutorial中文翻译](https://typst-doc-cn.github.io/docs/tutorial/writing-in-typst/) +- Typst 语法官网文档:[Syntax – Typst Documentation](https://typst.app/docs/reference/syntax/)、[语法中文翻译](https://typst-doc-cn.github.io/docs/reference/syntax/) +- 中文社区小蓝书:[The Raindrop-Blue Book (Typst中文教程)](https://typst-doc-cn.github.io/tutorial/basic/writing-markup.html) + +### 我不会代码、不会 LaTeX 可以使用吗?从接触到使用需要多久? + +可以的。因为文档样式该模板已经提供,Typst 有标记模式(语法糖),使用起来就类似于 Markdown,完全不需要较多的代码功底。 + +如果有 Markdown 基础,基本上可以直接上手~ 如果没有,跳回第一个问题,查看相关说明。 + +### 为啥使用方法里面建议 Fork ?不是直接 Clone ? + +这样可以同步更新。模板刚刚发布,虽然基本没有什么问题了,可能会有细节调整或者代码优化。 + +**建议:** 大家使用时,可以直接复制 `template` 文件夹,重命名为 `mythesis` (已经添加至 `.gitignore`),这样更新布局不会影响到个人的论文内容。 + +### Typst 是个啥玩意?相较于 LaTeX 有啥优势? + +**提供两篇**写的很用心的**文章:** + +- [探索 Typst,一种类似于 LaTeX 的新排版系统](https://mp.weixin.qq.com/s/58IYHA3pROuh4iDHB4o1Vw)(译文)、[原文](https://blog.jreyesr.com/posts/typst/) +- [Typst 中文用户使用体验 - OrangeX4大佬](https://zhuanlan.zhihu.com/p/669097092) + +### 在线模式字体显示异常,怎么办? + +你需要上传 [https://github.com/Rsweater/cug-thesis-typst/tree/main/fonts/Windows-SysFonts](https://github.com/Rsweater/cug-thesis-typst/tree/main/fonts/Windows-SysFonts) 里面所有字体,将 `fonts/Windows-SysFonts` 文件夹上传至模板创建的项目根目录即可。 + +### 为什么提醒类似 `unknown font family: songti sc` 的 Warning ? + +如果你的设备是 Windows ,会遇见所有的 `sc` 结尾的字体找不到的提醒,因为这个是 Mac OS 系统字体,可以忽略。模板为了适应不同的平台,模板默认设置了多种字体。但是只要不是两种系统的字体均报 Warning,就不会影响渲染效果。如果不想看报错,可以去 [Rsweater/cug-thesis-typst/tree/main/fonts](https://github.com/Rsweater/cug-thesis-typst/tree/main/fonts) 安装所有字体。 + +## 致谢 + +- 感谢 [modern-nju-thesis](https://github.com/nju-lug/modern-nju-thesis)、[better-thesis](https://github.com/sysu/better-thesis)、[HIT-Thesis-Typst](https://github.com/hitszosa/universal-hit-thesis) 为本模板提供了项目实现思路。 +- 感谢 [Timozer/CUGThesis: 中国地质大学(武汉)研究生学位论文 TeX 模板](https://github.com/Timozer/CUGThesis) 提供了页面布局依据。 +- 感谢 [Typst 非官方中文交流群](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=6uP3n8PtpcyQeWytl7VK5xYKAw1JVadN&authKey=aFgMcHuImuMFT9ENdp9%2Ff7F6394iuYEaVTdRIGSDTeT9FQ1VXn7NLstPwJ1OaetW&noverify=0&group_code=793548390) 的大佬的答疑解惑,感谢 [tzhTaylor](https://github.com/tzhTaylor) 大佬交流 CJK 第一段首行缩进的解决方案。 +- 感谢 [evibhm](https://github.com/evibhm) 校友抓虫子。 + +## License + +This project is licensed under the MIT License. diff --git a/packages/preview/modern-cug-thesis/0.2.6/layouts/appendix.typ b/packages/preview/modern-cug-thesis/0.2.6/layouts/appendix.typ new file mode 100644 index 000000000..5592cfbc6 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/layouts/appendix.typ @@ -0,0 +1,28 @@ +#import "@preview/i-figured:0.2.4" +#import "../utils/custom-numbering.typ": custom-numbering + +// 后记,重置 heading 计数器 +#let appendix( + numbering: custom-numbering.with(first-level: "", depth: 4, "1.1"), + // figure 计数 + show-figure: i-figured.show-figure.with(numbering: "1.1"), + // equation 计数 + show-equation: i-figured.show-equation.with(numbering: "(1.1)"), + // 重置计数 + reset-counter: false, + it, +) = { + set heading(numbering: numbering) + if reset-counter { + counter(heading).update(0) + } + // 标题号与标题空一个汉字符 + show heading: it => { + counter(heading).display() + h(1em) + it.body + } + // 设置 figure 的编号 + show figure: show-figure + // 设置 equation 的编号 + show math.equation.where(block: true): show-equation + it +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/layouts/doc.typ b/packages/preview/modern-cug-thesis/0.2.6/layouts/doc.typ new file mode 100644 index 000000000..823eeaf5c --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/layouts/doc.typ @@ -0,0 +1,38 @@ +// 文稿设置,可以进行一些像页面边距这类的全局设置 +#import "../utils/style.typ": show-cn-fakebold +#import "../utils/str.typ": to-normal-str + +#let doc( + // documentclass 传入参数 + info: (:), + // 其他参数 + fallback: true, // 字体缺失时使用 fallback,不显示豆腐块 + lang: "zh", + margin: 3cm, + it, +) = { + // 1. 默认参数 + info = ( + title: ("基于 Typst 的", "中国地质大学学位论文"), + author: "张三", + ) + info + + // 2. 对参数进行处理 + // 2.1 如果是字符串,则使用换行符将标题分隔为列表 + if type(info.title) == str { + info.title = info.title.split("\n") + } + + // 3. 基本的样式设置 + show: show-cn-fakebold + set text(lang: lang) + set page(margin: margin) + + // 4. PDF 元信息 + set document( + title: to-normal-str(src: info.title), + author: info.author, + ) + + it +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/layouts/mainmatter.typ b/packages/preview/modern-cug-thesis/0.2.6/layouts/mainmatter.typ new file mode 100644 index 000000000..e07d72162 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/layouts/mainmatter.typ @@ -0,0 +1,243 @@ +// #import "@preview/anti-matter:0.0.2": anti-front-end +#import "../utils/style.typ": 字号, 字体 +#import "../utils/custom-numbering.typ": custom-numbering +#import "../utils/custom-heading.typ": heading-display, active-heading, current-heading +#import "../utils/unpairs.typ": unpairs +#import "../utils/anonymous-info.typ": anonymous-info +#import "../utils/word-counter.typ": * +#import "../utils/number-per-chapter.typ": sub-figure-numbering, figure-numbering, equation-numbering + +#let mainmatter( + // documentclass 传入参数 + twoside: false, + anonymous: false, + fonts: (:), + info: (:), + // 其他参数 + leading: 20pt-1.0em, + spacing: 20pt-1.0em, + justify: true, + first-line-indent: (amount: 2em, all: true), + numbering: custom-numbering.with(first-level: "第一章", depth: 4, "1.1"), + // 正文字体与字号参数 + text-args: auto, // auto =>宋体、小四, 20pt + // 标题字体与字号 + heading-font: auto, // auto => 黑体 + heading-size: (字号.三号, 字号.四号, 字号.小四, 字号.小四), // TIps: 自定义四级标题格式 + heading-weight: ("bold", "bold", "regular", "regular"), + heading-above: (2.0 * 1.0em, 1.0 * 1.0em, 1.0 * 1.0em, + ), // 页面最上方的距离压缩到 0em,四级标题使用固定值20pt + heading-below: (2.0 * 1.0em, 1.0 * 1.0em, 1.0 * 1.0em, + ), + heading-pagebreak: (true, false, false, ), + heading-align: (center, center, left, ), + // 页眉 + header-vspace: 0.5cm, + header-line-width: 0.6pt, + // caption 的 separator + separator: 1.0em, + // caption 样式 + caption-leading: 1.0em, + caption-size: 字号.五号, + // // figure 计数 + // show-figure: i-figured.show-figure, + // // equation 计数 + // show-equation: i-figured.show-equation, + ..args, + it, +) = { + // 1. 默认参数 + fonts = 字体 + fonts + if text-args == auto { + text-args = ( + font: fonts.宋体, size: 字号.小四, + // bottom-edge: "descender", top-edge: "ascender", + bottom-edge: 0em, top-edge: 1.0em, + // cjk-latin-spacing: auto, // 自动添加cjk与latin间距 + ) + } + + // 1.1 字体与字号 + if heading-font == auto { + heading-font = (fonts.黑体,) + } + // 1.0 处理 heading- 开头的其他参数 + let heading-text-args-lists = args.named().pairs() + .filter((pair) => pair.at(0).starts-with("heading-")) + .map((pair) => (pair.at(0).slice("heading-".len()), pair.at(1))) + + let header-annotations = { + if info.doctype == "doctor" { + if info.is-equivalent { "同等学力博士学位论文" } + else { "博士学位论文" } + } + else { // 硕士: + if info.is-equivalent { "同等学力硕士学位论文" } + else { + if info.degreetype == "academic" { "硕士学位论文" } + else { + if info.is-fulltime { "硕士专业学位论文(全日制)" } + else { "硕士专业学位论文(非全日制)" } + } + } + } + } + if type(info.title) == str { + info.title = info.title.split("\n") + } + + // 2. 辅助函数 + let array-at(arr, pos) = { + arr.at(calc.min(pos, arr.len()) - 1) + } + let anonymous-info = anonymous-info.with(anonymous: anonymous) + + // 3. 设置基本样式 + // 3.1 文本和段落样式 + set text(..text-args) + show text: set block(breakable: true) + set par( + leading: leading, + justify: justify, + spacing: spacing, + first-line-indent: first-line-indent, + linebreaks: "simple" // 避免压缩CJK标点符号,与 Word 默认保持一致 + ) + // show: show-cn-fakebold + // show: fix-indent() + show raw: set text(font: fonts.等宽) + // 3.2 脚注样式 + show footnote.entry: set text(font: fonts.宋体, size: 字号.五号) + set heading(numbering: "1.1") + show heading.where(level: 1): it => { + counter(math.equation).update(0) + counter(figure.where(kind: image)).update(0) + counter(figure.where(kind: table)).update(0) + counter(figure.where(kind: raw)).update(0) + it + } + show figure.caption: it => { + let pattern = "^[^:]+" + sym.space.nobreak + "[\d.]+" + show regex(pattern): strong + show regex(pattern): emph + // show regex(pattern): set text(weight: "bold") + // show regex(pattern): set text(style: "italic") + it + } + show figure: set figure(numbering: figure-numbering) + show math.equation: set math.equation(numbering: equation-numbering) + // 3.3 设置 figure 的编号 + // show heading: i-figured.reset-counters + // show figure: show-figure + // 3.4 设置 equation 的编号和假段落首行缩进 + // show math.equation.where(block: true): show-equation + // 3.5 表格表头置顶 + 不用冒号用空格分割 + 样式 + show figure.where( + kind: table + ): set figure.caption(position: top) + set figure.caption(separator: h(separator)) + show figure.caption: set text(font: fonts.宋体, size: 字号.五号) + show figure.caption: set par(leading: caption-leading) + // 表格可跨页 + show figure: set block(breakable: true) + // 3.6 优化列表显示 + // 术语列表 terms 不应该缩进 + show terms: set par(first-line-indent: 0pt) + + // 4. 处理标题 + // 4.1 设置标题的 Numbering + set heading(numbering: numbering) + // 4.2 设置字体字号并加入假段落模拟首行缩进 + show heading: it => { + set par(leading: 1.0em, spacing: 1.0em) + set text( + bottom-edge: 0em, top-edge: 1.0em, + font: array-at(heading-font, it.level), + size: array-at(heading-size, it.level), + weight: array-at(heading-weight, it.level), + ..unpairs(heading-text-args-lists + .map((pair) => (pair.at(0), array-at(pair.at(1), it.level)))) + ) + block( + counter(heading).display() + h(1em) + it.body, + above: array-at(heading-above, it.level)*1.5, + below: array-at(heading-below, it.level)*1.5, + ) + } + show heading.where(level: 1): it => { + v(array-at(heading-above, 1), weak: false) + it + } + // 4.3 标题居中与自动换页 + show heading: it => { + if array-at(heading-pagebreak, it.level) { + // 如果打上了 no-auto-pagebreak 标签,则不自动换页 + if "label" not in it.fields() or str(it.label) != "no-auto-pagebreak" { + pagebreak(weak: true) + } + } + if array-at(heading-align, it.level) != auto { + set align(array-at(heading-align, it.level)) + it + } else { + it + } + } + + // 5. 处理页眉 + set page(..( + header: context { + let numbering = if page.numbering != none { page.numbering } else { "1" } + // + let page = counter(page).display(numbering) + set text(font: 字体.宋体, size: 字号.五号, baseline: 6pt) + + stack( + dir: if calc.odd(here().page()) { rtl } else { ltr }, + page, + 1fr, + if calc.odd(here().page()) { + anonymous-info(info.school-name)+header-annotations + } else { + info.author+":"+info.title.join("") }, + 1fr + ) + line(length: 100%, stroke: header-line-width) + }, + header-ascent: 0.5cm, // 3.0 - 0.5 = 2.5cm 页眉上边距 + footer-descent: 1.0cm // 3.0 - 1.0 = 2.0cm 页脚下边距 + )) + counter(page).update(1) + + show link: it => { + underline(text(rgb(0, 0, 255), it)) + } + + // 列表样式 + set enum(indent: 0.9em, body-indent: 0.35em) + set list(indent: 1.2em, body-indent: 0.6em) + + // 引述文本样式 + // show quote: set text(font: fonts.楷体) + show quote: set pad(x: 2em) + + set underline(stroke: 0.5pt + black, offset: 0.35em) + + // 字数统计(正文 + 附录) + // typst query main.typ '' 2>/dev/null --field value --one + context [ + #metadata(state("total-words-cjk").final()) + #metadata(state("total-characters").final()) + ] + + it +} + +// test code +// #import "../mythesis/others/test-text.typ": test-text, mainmatter-parms +// #set text(fallback: false, lang: "zh", region: "CN") +// #set page(margin: (x: 3cm, y: 3cm)) +// #mainmatter( +// ..mainmatter-parms, +// test-text +// ) diff --git a/packages/preview/modern-cug-thesis/0.2.6/lib.typ b/packages/preview/modern-cug-thesis/0.2.6/lib.typ new file mode 100644 index 000000000..f77848421 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/lib.typ @@ -0,0 +1,337 @@ +// 中国地质大学学位论文模板 cug-thesis-typst +// Author: https://github.com/Rsweater +// Repo: https://github.com/Rsweater/cug-thesis-typst +// 在线模板可能不会更新得很及时,如果需要最新版本,请关注 Repo +#import "layouts/doc.typ": doc +#import "layouts/mainmatter.typ": mainmatter +#import "layouts/appendix.typ": appendix +#import "pages/fonts-display-page.typ": fonts-display-page +#import "pages/postgraduate/titlepage.typ": postgraduate-titlepage +#import "pages/postgraduate/declaration.typ": postgraduate-declaration +#import "pages/postgraduate/resume.typ": postgraduate-resume +#import "pages/postgraduate/list-of-defence-commitee.typ": list-of-defence-commitee +#import "pages/postgraduate/abstract.typ": postgraduate-abstract +#import "pages/postgraduate/abstract-en.typ": postgraduate-abstract-en +#import "pages/postgraduate/outline.typ": postgraduate-outline +#import "pages/postgraduate/list-of-figures-tables.typ": list-of-figures-tables +#import "pages/notation.typ": notation +#import "pages/postgraduate/acknowledgement.typ": acknowledgement +#import "utils/custom-cuti.typ": * +#import "utils/bilingual-bibliography.typ": bilingual-bibliography +#import "utils/custom-numbering.typ": custom-numbering +#import "utils/custom-heading.typ": heading-display, active-heading, current-heading +#import "utils/word-counter.typ": * +#import "utils/style.typ": 字体, 字号 +#import "utils/number-per-chapter.typ": subpar-grid + +#let indent = h(2em) +#let no-indent = h(-2em) + +// 使用函数闭包特性,通过 `documentclass` 函数类进行全局信息配置,然后暴露出拥有了全局配置的、具体的 `layouts` 和 `templates` 内部函数。 +#let documentclass( + nl-cover: false, // TODO: 是否使用国家图书馆封面,默认关闭 + single-side: (), // 单面打印范围 + anonymous: false, // 盲审模式 + bibliography: none, // 原来的参考文献函数 + // 控制页面是否渲染 + pages: ( + // 封面可能由学院统一打印提供,因此可以不渲染 + cover: true, + + // 附录部分为可选。设置为 true 后,会在参考文献部分与致谢部分之间插入附录部分。 + appendix: false, + ), + fonts: (:), // 字体,应传入「宋体」、「黑体」、「楷体」、「仿宋」、「等宽」 + info: (:), + // 论文正文信息,包括绪论、主体、结论 + // content, +) = { + // 默认参数 + fonts = 字体 + fonts + info = ( + // 论文标题,将展示在封面、扉页与页眉上 + // 多行标题请使用数组传入 `("thesis title", "with part next line")`,或使用换行符:`"thesis title\nwith part next line"` + title: ("中国地质大学学位论文Typst模板", "参考研究生学位论文写作规范(2015-)"), + title-en: ("The Specification of Writting and Printing", "for CUG thesis"), + + // 论文作者信息:学号、姓名、院系、专业、指导老师 + grade: "2025", + student-id: "120222xxxx", + school-code: "10491", + school-name: "中国地质大学", + school-name-en: "China University of Geosciences", + author: "张三", + author-en: "Ming Xing", + department: "国家地理信息系统\n工程技术研究中心", + department-en: "", + doctype: "master", + degreetype: "professional", + is-equivalent: false, + is-fulltime: true, + degree: "工程硕士", + degree-en: "Master of Engineering", + major: "测绘工程", + major-en: "Surveying and Mapping Engineering", + // 指导老师信息,以`("name", "title")` 数组方式传入 + supervisor: ("李四", "教授"), + supervisor-en: ("Prof.", "Li Si"), + supervisor-ii: (), + supervisor-ii-en: (), + address-en: "Wuhan 430074 P.R. China", + + // 提交日期,默认为论文 PDF 生成日期 + submit-date: datetime.today(), + // 以下为研究生项 + // defend-date: datetime.today(), + // confer-date: datetime.today(), + // bottom-date: datetime.today(), + chairman: "某某某 教授", + reviewer: ("某某某 教授", "某某某 教授"), + clc: "O643.12", + udc: "544.4", + secret-level: "公开", + supervisor-contact: "南京大学 江苏省南京市栖霞区仙林大道163号", + email: "xyz@smail.nju.edu.cn", + ) + info + + return ( + // 将传入参数再导出 + doctype: info.doctype, + degree: info.degree, + nl-cover: nl-cover, + single-side: single-side, + anonymous: anonymous, + fonts: fonts, + info: info, + // 页面布局 + // 论文渲染控制参数处理。设置可选页面的默认设置项 + doc: (..args) => { + doc( + ..args, + info: info + args.named().at("info", default: (:)), + ) + }, + mainmatter: (..args) => { + if info.doctype == "master" or info.doctype == "doctor" { + mainmatter( + twoside: if single-side.contains("mainmatter") { true } else { false }, + anonymous: anonymous, + display-header: true, + ..args, + fonts: fonts + args.named().at("fonts", default: (:)), + info: info + args.named().at("info", default: (:)), + ) + } else { + mainmatter( + twoside: if single-side.contains("mainmatter") { true } else { false }, + ..args, + fonts: fonts + args.named().at("fonts", default: (:)), + ) + } + }, + + appendix: (..args) => { + appendix( + ..args, + ) + }, + + // 字体展示页 + fonts-display-page: (..args) => { + fonts-display-page( + twoside: if single-side.contains("fonts-display-page") { true } else { false }, + ..args, + fonts: fonts + args.named().at("fonts", default: (:)), + ) + }, + + // 封面 + + + // 题名页,通过 type 分发到不同函数 + title-page: (..args) => { + if info.doctype == "master" or info.doctype == "doctor" { + postgraduate-titlepage( + anonymous: anonymous, + twoside: if single-side.contains("title-page") { true } else { false }, + ..args, + info: info + args.named().at("info", default: (:)), + ) + } else if info.doctype == "postdoc" { + panic("postdoc has not yet been implemented.") + } else { + panic("bachelor has not yet been implemented.") + // bachelor-cover( + // anonymous: anonymous, + // twoside: if single-side.contains("title-page") { true } else { false }, + // ..args, + // fonts: fonts + args.named().at("fonts", default: (:)), + // info: info + args.named().at("info", default: (:)), + // ) + } + }, + + // 声明页,通过 type 分发到不同函数 + decl-page: (..args) => { + if info.doctype == "master" or info.doctype == "doctor" { + postgraduate-declaration( + anonymous: anonymous, + twoside: if single-side.contains("decl-page") { true } else { false }, + ..args, + info: info + args.named().at("info", default: (:)), + ) + } else if info.doctype == "postdoc" { + panic("postdoc has not yet been implemented.") + } else { + panic("bachelor has not yet been implemented.") + // bachelor-decl-page( + // anonymous: anonymous, + // twoside: if single-side.contains("decl-page") { true } else { false }, + // ..args, + // fonts: fonts + args.named().at("fonts", default: (:)), + // info: info + args.named().at("info", default: (:)), + // ) + } + }, + + // 简历页,通过 type 分发到不同函数 + resume-page: (..args) => { + if info.doctype == "master" or info.doctype == "doctor" { + postgraduate-resume( + anonymous: anonymous, + twoside: if single-side.contains("resume-page") { true } else { false }, + ..args, + info: info + args.named().at("info", default: (:)), + ) + } else if info.doctype == "postdoc" { + panic("postdoc has not yet been implemented.") + } else { + panic("bachelor has not yet been implemented.") + // bachelor-decl-page( + // anonymous: anonymous, + // twoside: if single-side.contains("resume-page") { true } else { false }, + // ..args, + // fonts: fonts + args.named().at("fonts", default: (:)), + // info: info + args.named().at("info", default: (:)), + // ) + } + }, + + // 委员会名单页 + defence-page: (..args) => { + if info.doctype == "master" or info.doctype == "doctor" { + list-of-defence-commitee( + anonymous: anonymous, + twoside: if single-side.contains("resume-page") { true } else { false }, + ..args, + info: info + args.named().at("info", default: (:)), + ) + } else if info.doctype == "postdoc" { + panic("postdoc has not yet been implemented.") + } else { + panic("bachelor has not yet been implemented.") + // bachelor-decl-page( + // anonymous: anonymous, + // twoside: if single-side.contains("resume-page") { true } else { false }, + // ..args, + // fonts: fonts + args.named().at("fonts", default: (:)), + // info: info + args.named().at("info", default: (:)), + // ) + } + }, + + // 中文摘要页,通过 type 分发到不同函数 + abstract: (..args) => { + if info.doctype == "master" or info.doctype == "doctor" { + postgraduate-abstract( + doctype: info.doctype, + degree: info.degree, + anonymous: anonymous, + twoside: if single-side.contains("abstract") { true } else { false }, + ..args, + fonts: fonts + args.named().at("fonts", default: (:)) + ) + } else if info.doctype == "postdoc" { + panic("postdoc has not yet been implemented.") + } else { + panic("bachelor has not yet been implemented.") + // bachelor-abstract( + // anonymous: anonymous, + // twoside: if single-side.contains("abstract") { true } else { false }, + // ..args, + // fonts: fonts + args.named().at("fonts", default: (:)), + // info: info + args.named().at("info", default: (:)), + // ) + } + }, + + // 英文摘要页,通过 type 分发到不同函数 + abstract-en: (..args) => { + if info.doctype == "master" or info.doctype == "doctor" { + postgraduate-abstract-en( + doctype: info.doctype, + degree: info.degree, + anonymous: anonymous, + twoside: if single-side.contains("abstract-en") { true } else { false }, + ..args, + fonts: fonts + args.named().at("fonts", default: (:)), + // info: info + args.named().at("info", default: (:)), + ) + } else if info.doctype == "postdoc" { + panic("postdoc has not yet been implemented.") + } else { + panic("bachelor has not yet been implemented.") + // bachelor-abstract-en( + // anonymous: anonymous, + // twoside: if single-side.contains("abstract-en") { true } else { false }, + // ..args, + // fonts: fonts + args.named().at("fonts", default: (:)), + // info: info + args.named().at("info", default: (:)), + // ) + } + }, + + // 目录页 + outline-page: (..args) => { + postgraduate-outline( + twoside: if single-side.contains("outline-page") { true } else { false }, + ..args, + fonts: fonts + args.named().at("fonts", default: (:)), + ) + }, + + // 图标目录页 + list-of-figures-tables: (..args) => { + list-of-figures-tables( + twoside: if single-side.contains("outline-page") { true } else { false }, + ..args, + fonts: fonts + args.named().at("fonts", default: (:)), + ) + }, + + // 符号表页 + notation: (..args) => { + notation( + twoside: if single-side.contains("notation") { true } else { false }, + ..args, + ) + }, + + // 参考文献页 + bilingual-bibliography: (..args) => { + bilingual-bibliography( + bibliography: bibliography, + ..args, + ) + }, + + // 致谢页 + acknowledgement: (..args) => { + acknowledgement( + anonymous: anonymous, + twoside: if single-side.contains("acknowledgement") { true } else { false }, + ..args, + ) + }, + ) +} diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/fonts-display-page.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/fonts-display-page.typ new file mode 100644 index 000000000..e893ad30a --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/fonts-display-page.typ @@ -0,0 +1,57 @@ +#import "../utils/style.typ": 字号, 字体, show-cn-fakebold +#import "../utils/hline.typ": hline + +// 字体显示测试页 +#let fonts-display-page( + twoside: false, + fonts: (:), + size: 字号.小四, + lang: "zh", +) = { + // 1. 默认参数 + show: show-cn-fakebold + fonts = 字体 + fonts + + // 2. 辅助函数 + let display-font(cjk-name, latin-name) = [ + #set text(font: fonts.at(cjk-name)) + + #cjk-name (#latin-name CJK Regular): 落霞与孤鹜齐飞,秋水共长天一色。 + + #cjk-name (#latin-name Latin Regular): The fanfare of birds announces the morning. + + *#cjk-name (#latin-name CJK Bold): 落霞与孤鹜齐飞,秋水共长天一色。* + + *#cjk-name (#latin-name Latin Bold): The fanfare of birds announces the morning.* + ] + + // 3. 正式渲染 + pagebreak(weak: true, to: if twoside { "odd" }) + set text(size: size, lang: lang) + + [ + *Fonts Display Page:* + + #hline() + + #display-font("宋体", "SongTi") + + #hline() + + #display-font("黑体", "HeiTi") + + #hline() + + // #display-font("楷体", "KaiTi") + + // #hline() + + // #display-font("仿宋", "FangSong") + + // #hline() + + #display-font("等宽", "Mono") + ] +} + +#show: fonts-display-page() diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/notation.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/notation.typ new file mode 100644 index 000000000..d49bde49b --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/notation.typ @@ -0,0 +1,35 @@ +#let notation( + twoside: false, + title: "符号表", + outlined: true, + width: 350pt, + columns: (60pt, 1fr), + row-gutter: 16pt, + ..args, + body, +) = { + heading( + level: 1, + numbering: none, + outlined: outlined, + title + ) + + align(center, block(width: width, + align(start, grid( + columns: columns, + row-gutter: row-gutter, + ..args, + // 解析 terms 内部结构以渲染到表格里 + ..body.children + .filter(it => it.func() == terms.item) + .map(it => (it.term, it.description)) + .flatten() + )) + )) + + // 手动分页 + if twoside { + pagebreak() + " " + } +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/abstract-en.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/abstract-en.typ new file mode 100644 index 000000000..9c1a3339c --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/abstract-en.typ @@ -0,0 +1,54 @@ +#import "../../utils/style.typ": 字号, 字体 + +// 研究生英文摘要页 +#let postgraduate-abstract-en( + // documentclass 传入的参数 + doctype: "master", + degree: "academic", + anonymous: false, + twoside: false, + fonts: (:), + // 其他参数 + keywords: (), + abstract-title-weight: "bold", + leading: 20pt - 1.0em, + spacing: 20pt - 1.0em, + body, +) = { + // 默认参数 + fonts = 字体 + fonts + + // 正式渲染 + [ + #align(center, par( + leading: 1.0em, spacing: 1.0em, + text( + font: fonts.宋体, size: 字号.小二, + weight: abstract-title-weight, "Abstract", + bottom-edge: 0em, top-edge: 1.0em)) + ) + + #set text( + font: fonts.宋体, size: 字号.小四, + bottom-edge: 0em, top-edge: 1.0em, + ) + #set par( + leading: leading, justify: true, spacing: spacing, + first-line-indent: (amount: 2em, all: true) + ) + + #body + + #h(-2.0em)*Key Words*: #(("",)+ keywords.intersperse("; ")).sum() + ] + pagebreak(weak: true) //换页 + if twoside { + pagebreak() // 空白页 + } +} + +// 测试代码 +// #postgraduate-abstract-en( +// keywords: ("keyword1", "keyword2", "keyword3"), +// [Abstract内容与中文摘要相对应。一般不少于300个英文实词,篇幅以一页为宜。如需要,字数可以略多。] +// ) \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/abstract.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/abstract.typ new file mode 100644 index 000000000..7fa9efaeb --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/abstract.typ @@ -0,0 +1,67 @@ +#import "../../utils/style.typ": 字号, 字体, show-cn-fakebold + +// 研究生中文摘要页 +#let postgraduate-abstract( + // documentclass 传入的参数 + doctype: "master", + degree: "academic", + anonymous: false, + twoside: false, + fonts: (:), + // 其他参数 + keywords: (), + abstract-title-weight: "bold", + leading: 20pt - 1.0em, + spacing: 20pt - 1.0em, + body, +) = { + // 默认参数 + fonts = 字体 + fonts + + // 正式渲染 + show: show-cn-fakebold + + [ + #align(center, par( + leading: 1.0em, spacing: 1.0em, + text( + font: fonts.黑体, size: 字号.小二, + weight: abstract-title-weight, "摘  要", + bottom-edge: 0em, top-edge: 1.0em, + ) + ) + ) + + #set text( + font: fonts.宋体, size: 字号.小四, + bottom-edge: 0em, top-edge: 1.0em, + ) + #set par( + leading: leading, justify: true, spacing: spacing, + first-line-indent: (amount: 2em, all: true), + linebreaks: "simple" + ) + + #body + + #h(-2.0em)*关键词*:#(("",)+ keywords.intersperse(";")).sum() + ] + pagebreak() //换页 + if twoside { + pagebreak() // 空白页 + } +} + +// 测试代码 +// #postgraduate-abstract( +// keywords: ("关键词1", "关键词2", "关键词3"), +// [中文摘要是论文内容的简要陈述,是一篇具有独立性和完整性的短文,一般以第三人称语气写成,不加评论和补充的解释。摘要具有自含性,即不阅读论文的全文,就能获得必要的信息。摘要的内容应包括与论文等同的主要信息,供读者确定有无必要阅读全文,也可供二次文献采用。摘要一般应说明研究工作的目的、研究方法、研究成果和结论,要突出本论文的创造性成果。 + +// 中文摘要力求语言精炼准确,篇幅以一页为宜。如需要,字数可以略多。 + +// 用外文撰写学位论文时,中文摘要应不少于6000字。 + +// 摘要中不可出现图、表、化学方程式、非公知公用的符号和术语。 + +// 关键词在摘要内容后另起一行标明,一般3~5个,之间用分号分开。关键词是为了便于做文献索引和检索工作而从论文中选取出来用以表示全文主题内容信息的单词或术语,应体现论文特色,具有语义性,在论文中有明确出处。应尽量采用《汉语主题词表》或各专业主题词表提供的规范词。] +// ) \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/acknowledgement.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/acknowledgement.typ new file mode 100644 index 000000000..c7fb573e3 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/acknowledgement.typ @@ -0,0 +1,22 @@ +// 致谢页 +#let acknowledgement( + // documentclass 传入参数 + anonymous: false, + twoside: false, + // 其他参数 + title: "致谢", + outlined: true, + body, +) = { + if not anonymous { + pagebreak() // 换页 + if twoside { + pagebreak() // 空白页 + } + [ + #heading(level: 1, numbering: none, outlined: outlined, title) + + #body + ] + } +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/cover.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/cover.typ new file mode 100644 index 000000000..e0385c83a --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/cover.typ @@ -0,0 +1 @@ +// 硕士学位论文封面统一打印 \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/declaration.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/declaration.typ new file mode 100644 index 000000000..e92ac511f --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/declaration.typ @@ -0,0 +1,151 @@ + +#import "../../utils/style.typ": 字号, 字体 + +// 学术声明页 +#let postgraduate-declaration( + anonymous: false, + twoside: false, + info: (:), +) = { + // 如果需要匿名则短路返回 + if anonymous { + return + } + + // 适应标题过长 + if type(info.title) == str { + info.title = info.title.split("\n") + } + + set text(font: 字体.宋体, size: 字号.四号) + let title = info.at("title").join("") + let doctype = { + if info.at("doctype") == "master" { + "硕士" + } else { + "博士" + } + } + set par( + justify: true, first-line-indent: (amount: 2em, all: true), + leading: 字号.四号*2, linebreaks: "simple" + ) + + // 1. 原创性声明 + v(字号.五号 * 2) + align( + center, + text( + font: 字体.黑体, + size: 字号.三号, + weight: "bold", + "中国地质大学(武汉)研究生学位论文原创性声明", + ), + ) + v(字号.五号 * 3.0) + + block[ + 本人郑重声明:本人所呈交的#doctype;学位论文《#title;》,是本人在导师的指导下,在中国地质大学(武汉)攻读#doctype;学位期间独立进行研究工作所取得的成果。论文中除已注明部分外不包含他人已发表或撰写过的研究成果,对论文的完成提供过帮助的有关人员已在文中说明并致以谢意。\ + #v(1em) + 本人所呈交的#doctype;学位论文没有违反学术道德和学术规范,没有侵权行为,并愿意承担由此而产生的法律责任和法律后果。 + ] + + v(3.9em) + + align(right + top, + box( + grid( + align: (left, right, right), + columns: (auto, auto, 5.6em), + column-gutter: (0.5em), + gutter: 2em, + grid.cell("学位论文作者签名:", colspan: 2), grid.cell("", stroke: (bottom: 0.5pt + black)), + "日" + h(2em) + "期:", grid.cell(text("年") + h(2em) + text("月") + h(2em) + text("日"), colspan:2), + ) + ) + ) + + pagebreak() // 换页 + if twoside { + pagebreak() // 空白页 + } + + // 2. 导师承诺书 + v(字号.五号 * 2) + align( + center, + text( + font: 字体.黑体, + size: 字号.三号, + weight: "bold", + "中国地质大学(武汉)研究生学位论文导师承诺书", + ), + ) + v(字号.五号 * 3.0) + + block[ + 本人郑重声明:本人所指导的#doctype;学位论文《#title;》,是在本人的指导下,研究生在中国地质大学(武汉)攻读#doctype;学位期间独立进行研究工作所取得的成果,论文由研究生独立完成。\ + #v(1em) + 研究生所呈交的#doctype;学位论文没有违反学术道德和学术规范,没有侵权行为,并愿意承担由此而产生的与导师相关的责任和后果。 + ] + + v(3.9em) + + align(right + top, + box( + grid( + align: (left, right, right), + columns: (auto, auto, 5.6em), + column-gutter: (0.5em), + gutter: 2em, + grid.cell("指导教师(签字):", colspan: 2), grid.cell("", stroke: (bottom: 0.5pt + black)), + "日" + h(2em) + "期:", grid.cell(text("年") + h(2em) + text("月") + h(2em) + text("日"), colspan:2), + ) + ) + ) + pagebreak() // 换页 + if twoside { + pagebreak() // 空白页 + } + // 3. 使用授权书 + v(字号.五号 * 2) + align( + center, + text( + font: 字体.黑体, + size: 字号.三号, + weight: "bold", + "中国地质大学(武汉)学位论文使用授权书", + ), + ) + v(字号.五号 * 3.0) + + block[ + 本人授权中国地质大学(武汉)可采用影印、缩印、数字化或其它复制手段保存本学位论文;学校可向国家有关部门或机构送交本学位论文的电子版全文,编入有关数据库进行检索、下载及文献传递服务;同意在校园网内提供全文浏览和下载服务。\ + #v(1em) + 涉密论文解密后适用于本授权书。 + ] + + v(3.9em) + + align(right + top, + box( + grid( + align: (left, right, right), + columns: (auto, auto, 5.6em), + column-gutter: (0.5em), + gutter: 2em, + grid.cell("学位论文作者签名:", colspan: 2), grid.cell("", stroke: (bottom: 0.5pt + black)), + "日" + h(2em) + "期:", grid.cell(text("年") + h(2em) + text("月") + h(2em) + text("日"), colspan:2), + ) + ) + ) + pagebreak() // 换页 + if twoside { + pagebreak() // 空白页 + } +} + +// 测试代码 +// #import "../../mythesis/others/test-text.typ": mainmatter-parms +// #show: postgraduate-declaration(info: mainmatter-parms.info) \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/list-of-defence-commitee.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/list-of-defence-commitee.typ new file mode 100644 index 000000000..7c55a163e --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/list-of-defence-commitee.typ @@ -0,0 +1,115 @@ +#import "../../utils/style.typ": 字号, 字体, show-cn-fakebold +#import "../../utils/justify-text.typ": justify-text + + +// 答辩委员会名单 +#let list-of-defence-commitee( + anonymous: false, + twoside: false, + info: (:) +) = { + // 如果需要匿名则短路返回 + if anonymous { + return + } + + // 默认参数: 姓名, 职务, 单位 + info = ( + // 主席 + chair: (name: "张三", title: "教授", affiliation: "中国地质大学"), + // 委员 + // members: (), + member-1: (name: "李四", title: "研究员", affiliation: "中国地质大学"), + member-2: (name: "王五", title: "副研究员", affiliation: "中国地质大学"), + member-3: (name: "一二三", title: "副教授", affiliation: "中国地质大学"), + member-4: (name: "四五六", title: "正高工", affiliation: "中交第二公路勘察设计有限公司"), + // 秘书 + secretary:(name: "七八九", title: "高级工程师", affiliation: "中国地质大学") + ) + info + + // 辅助方法 + let distr(s, w: auto) = { + block( + width: w, + stack( + dir: ltr, + ..s.clusters().map(x => [#x]).intersperse(1fr), + ), + ) + } + let defence-info( + body, weight: "regular", + font: 字体.宋体, size: 字号.三号, + align-type: "default", // str(justify), str(default), left, right, center, + ) = { + rect(width: 100%, stroke: none, + text( + font: font, size: size, weight: weight, + top-edge: 1.2em, bottom-edge: 1.2em, + { + if (align-type == "justify") { + distr(body, w:3em) // name 3em + } else if (align-type == "default") { + body + } else {align(align-type, body)} + } + )) + } + let defence-title = defence-info.with(size: 字号.二号, weight: "bold", align-type: center) + + show: show-cn-fakebold + // 正式渲染 + block(height: auto, grid( + columns: 15.43cm, + rows: 3.9cm, + align: center+horizon, + defence-title("学位论文答辩委员会名单") + )) + + { + set align(center) + block(height: auto, width: 15.43cm, + grid( + columns: (8.5em, 8em, 9em, 16em), + rows: auto, + defence-info("主席"), + defence-info(info.chair.at("name"), align-type: "justify"), + defence-info(info.chair.at("title"), align-type: center), + defence-info(info.chair.at("affiliation")), + + grid.cell( + rowspan: 4, + defence-info("委员", align-type: "default"), + ), + // member-1 + defence-info(info.member-1.at("name"), align-type: "justify"), + defence-info(info.member-1.at("title"), align-type: center), + defence-info(info.member-1.at("affiliation")), + // member-2 + defence-info(info.member-2.at("name"), align-type: "justify"), + defence-info(info.member-2.at("title"), align-type: center), + defence-info(info.member-2.at("affiliation")), + // member-3 + defence-info(info.member-3.at("name"), align-type: "justify"), + defence-info(info.member-3.at("title"), align-type: center), + defence-info(info.member-3.at("affiliation")), + // member-4 + defence-info(info.member-4.at("name"), align-type: "justify"), + defence-info(info.member-4.at("title"), align-type: center), + defence-info(info.member-4.at("affiliation")), + + defence-info("秘书"), + defence-info(info.secretary.at("name"), align-type: "justify"), + defence-info(info.secretary.at("title"), align-type: center), + defence-info(info.secretary.at("affiliation")), + ) + ) + } + pagebreak() //换页 + if twoside { + pagebreak() // 空白页 + } +} + +// #set page(margin: 3cm) +// #list-of-defence-commitee() diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/list-of-figures-tables.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/list-of-figures-tables.typ new file mode 100644 index 000000000..96db1d2c3 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/list-of-figures-tables.typ @@ -0,0 +1,72 @@ +// #import "@preview/i-figured:0.2.4" +#import "../../utils/invisible-heading.typ": invisible-heading +#import "../../utils/style.typ": 字号, 字体 + +// 表格目录生成 +#let list-of-figures-tables( + // documentclass 传入参数 + twoside: false, + fonts: (:), + // 其他参数 + title-figures: "图清单", + title-tables: "表清单", + outlined: false, + title-vspace: 1em, + title-text-args: auto, + // 字体与字号 + font: auto, + size: 字号.小四, + // 垂直间距 + above: 20pt-1em, + below: 20pt-1em, + ..args, +) = { + // 1. 默认参数 + fonts = 字体 + fonts + if title-text-args == auto { + title-text-args = (font: fonts.黑体, size: 字号.小二, weight: "regular", bottom-edge: 0em, top-edge: 1.0em) + } + // 字体与字号 + if font == auto { + font = fonts.宋体 + } + + // 2. 正式渲染 + // 默认显示的字体 + set text(font: font, size: size, bottom-edge: 0em, top-edge: 1.0em) + show outline.entry: set block( + above: above, + below: below, + ) + + // 显示图清单 + { + v(title-vspace) + set align(center) + text(..title-text-args, title-figures) + // 标记一个不可见的标题用于目录生成 + invisible-heading(level: 1, outlined: outlined, title-figures) + v(title-vspace) + } + outline(target: figure.where(kind: image), title: none) + + // 显示表清单 + v(title-vspace) + { + v(title-vspace) + set align(center) + text(..title-text-args, title-tables) + // 标记一个不可见的标题用于目录生成 + invisible-heading(level: 1, outlined: outlined, title-tables) + v(title-vspace) + } + + v(title-vspace) + outline(target: figure.where(kind: table), title: none) + + // 手动分页 + pagebreak(weak: true) //换页 + if twoside { + pagebreak() // 空白页 + } +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/outline.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/outline.typ new file mode 100644 index 000000000..f1d4774c6 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/outline.typ @@ -0,0 +1,101 @@ +#import "../../utils/invisible-heading.typ": invisible-heading +#import "../../utils/style.typ": 字号, 字体 + +// 目录生成 +#let postgraduate-outline( + // documentclass 传入参数 + twoside: false, + fonts: (:), + // 其他参数 + depth: 4, + title: "目  录", + outlined: false, + title-vspace: 1em, + title-text-args: auto, + // 引用页数的字体,这里用于显示 Times New Roman + reference-font: auto, + reference-size: 字号.小四, + // 字体与字号 + font: auto, + size: (字号.四号, 字号.小四, 字号.小四), + // 垂直间距 + above: (20pt-1em, 20pt-1em, 20pt-1em, 20pt-1em), + below: (20pt-1em, 20pt-1em, 20pt-1em, 20pt-1em), + indent: (0pt, 1em, 2em,), + // 全都显示点号 + fill: (repeat([.], gap: 0.15em),), + gap: .3em, + ..args, +) = { + // 1. 默认参数 + fonts = 字体 + fonts + if title-text-args == auto { + title-text-args = ( + font: fonts.黑体, + size: 字号.三号, + weight: "bold", + bottom-edge: 0em, top-edge: 1.0em, + ) + } + // 引用页数的字体,这里用于显示 Times New Roman + if reference-font == auto { + reference-font = fonts.宋体 + } + // 字体与字号 + if font == auto { + font = (fonts.宋体, fonts.宋体, fonts.宋体) + } + + // 2. 正式渲染 + + // 默认显示的字体 + set text(font: reference-font, size: 1.0em) + + { + set align(center) + // set par(spacing: 1em) + text(..title-text-args, title) + // 标记一个不可见的标题用于目录生成 + invisible-heading(level: 1, outlined: outlined, title) + } + + v(title-vspace) + + // 目录样式 + set outline(indent: level => indent.slice(0, calc.min(level + 1, indent.len())).sum()) + show outline.entry: entry => block( + above: above.at(entry.level - 1, default: above.last()), + below: below.at(entry.level - 1, default: below.last()), + + link( + entry.element.location(), + entry.indented( + none, + { + text( + font: font.at(entry.level - 1, default: font.last()), + size: size.at(entry.level - 1, default: size.last()), + bottom-edge: 0em, top-edge: 1.0em, + { + if entry.prefix() not in (none, []) { + entry.prefix() + h(gap) + } + entry.body() + }, + ) + box(width: 1fr, inset: (x: .25em), fill.at(entry.level - 1, default: fill.last())) + entry.page() + }, + gap: 0pt, + ), + ), + ) + + // 显示目录 + outline(title: none, depth: depth) + pagebreak(weak: true) //换页 + if twoside { + pagebreak() // 空白页 + } +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/resume.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/resume.typ new file mode 100644 index 000000000..429a98859 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/resume.typ @@ -0,0 +1,127 @@ +#import "../../utils/style.typ": 字号, 字体 + +// 作者简历 +#let postgraduate-resume( + anonymous: false, + twoside: true, + info: (:), +) = { + // 如果需要匿名则短路返回 + if anonymous { + return + } + // 默认参数 + info = ( + // 1. 基本情况信息 + name:"张三", + gender: "男", + nation: "汉族", + birthday: "1996-09-01", + native-place: "河南省鹤壁市", + bachelor-time: "2018.09——2022.06", + bachelor-school: "河南农业大学", + bachelor-type: "理学学士", + master-time: "2022.09——2025.06", + master-school: "中国地质大学(武汉)", + master-type: "工程硕士", + doctor-time: "", + doctor-school: "", + doctor-type: "", + // 2. 学术论文信息 + thesises: ( + "X. X研究[J]. X学报,2004(1):53-55.", + "X. X分析[J]. X技术,2005(5):6-7.", + ), + // 3. 获奖、专利情况信息 + awards: ( + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + ), + // 4. 研究项目信息 + projects: ( + "X项目, 国家自然基金,项目编号:X,参加人员;", + ) + ) + info + + // 个人简介 + v(字号.五号 * 4) + align( + center, + text( + font: 字体.黑体, + size: 字号.三号, + weight: "bold", + "作者简历", + ), + ) + v(字号.五号 * 3.0) + + set text( + font: 字体.宋体, size: 字号.小四, + top-edge: (20pt-1.0em)*0.7, bottom-edge: (20pt-1.0em)*0.3 + ) + // 1. 基本情况 + block[ + #text(font: 字体.黑体, size: 字号.小四)[一、基本情况] + #set par( + leading: 1.0em, linebreaks: "simple", first-line-indent: (amount: 2em, all: true)) + + 姓名:#info.name;#h(2em);性别:#info.gender;#h(2em);民族:#info.nation;#h(2em);出生日期:#info.birthday;#h(2em);籍贯: #info.native-place; + + #h(4em);#info.bachelor-time;#h(2em);#info.bachelor-school;#info.bachelor-type; + + #h(4em);#info.master-time;#h(2em);#info.master-school;#info.master-type; + + #if info.doctor-time != "" { + h(4em);info.doctor-time;h(2em);info.doctor-school;info.doctor-type; + } + ] + + // 2. 学术论文 + block[ + #text(font: 字体.黑体, size: 字号.小四)[二、学术论文] + #set par(leading: 1.0em, first-line-indent: (amount: 2em, all: true), hanging-indent: 2em) + + #info.thesises.join("\n"); + ] + + // 3. 获奖、专利情况 + block[ + #text(font: 字体.黑体, size: 字号.小四)[三、获奖、专利情况] + #set par(leading: 1.0em, first-line-indent: (amount: 2em, all: true), hanging-indent: 2em) + + #info.awards.join("\n"); + ] + // 4. 研究项目 + block[ + #text(font: 字体.黑体, size: 字号.小四)[四、研究项目] + #set par(leading: 1.0em, first-line-indent: (amount: 2em, all: true), hanging-indent: 2em) + + #info.projects.join("\n"); + ] + pagebreak() //换页 + if twoside { + pagebreak() // 空白页 + } +} + +// #postgraduate-resume() \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/titlepage.typ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/titlepage.typ new file mode 100644 index 000000000..9f20a9cab --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/pages/postgraduate/titlepage.typ @@ -0,0 +1,256 @@ +#import "../../utils/datetime-display.typ": datetime-zh-display +#import "../../utils/justify-text.typ": justify-text +#import "../../utils/style.typ": 字号, 字体 +#import "../../utils/anonymous-info.typ": anonymous-info + +// 研究生封面 +#let postgraduate-titlepage( + // documentclass 传入的参数 + anonymous: false, + twoside: false, + // fonts: (:), + info: (:), + // 其他参数 + cover-meta-font: "宋体", + cover-meta-size: "三号", + cover-title-font: "黑体", + cover-title-size: "二号", + bold-info-keys: ("title", "school-name"), + bold-level: "bold", + stoke-width: 0.5pt, + min-title-lines: 2, + min-reviewer-lines: 5, + info-inset: (bottom: -2pt), +) = { + // 对参数进行处理 + // 适应标题过长 + if type(info.title) == str { + info.title = info.title.split("\n") + } + if type(info.title-en) == str { + info.title-en = info.title-en.split("\n") + } + if type(info.department) == str { + info.department = info.department.split("\n") + } + assert(type(info.submit-date) == datetime, message: "submit-date must be datetime.") + + // 内置辅助函数 + let info-style( + body, + weight: "regular", leading: 22pt-1.0em, + font: 字体.at(cover-meta-font, default: 字体.宋体), + size: 字号.at(cover-meta-size, default: 字号.三号), + align-type: "default", // str(justify), str(default), left, right, center, + ) = { + set par(leading: leading) + rect( + width: auto, + stroke: none, + text( + font: font, size: size, + weight: weight, + if align-type == "justify" { + justify-text(with-tail: true, body) + } else if align-type == "default" { + body + } else {align(align-type, body)} + ) + ) + } + + let docname( + body, weight: "bold", + font: 字体.宋体, + size: 字号.一号, + leading: 1.0em, + ) = { + set align(center+horizon) + rect( + width: auto, + stroke: none, + text( + font: font, size: size, + weight: weight, + par(body, leading: leading) + ) + ) + } + let docname-en = docname.with(font: 字体.宋体, size: 字号.三号, weight: "regular") + let title = docname.with(font: 字体.黑体, size: 字号.二号) + let title-en = docname-en.with(font: "Times New Roman", size: 字号.二号, weight: "bold") + let address-en = docname-en + let anonymous-info = anonymous-info.with(anonymous: anonymous) + + // 正式渲染 + // 中文题名页 + grid( + align: (right, left, right, left), + rows: 1.38cm, + columns: (1fr, 1fr, 1fr, 1fr), + info-style("学校代码:", leading: 1.0em), + info-style(anonymous-info(info.school-code), leading: 1.0em), + info-style("研究生学号:", leading: 1.0em), + info-style(anonymous-info(info.student-id), leading: 1.0em), + ) + grid( + columns: 15.43cm, + rows: 3.9cm, + align: center, + if info.degreetype == "academic" { + if info.doctype == "doctor" { + docname(anonymous-info(info.school-name) + "\n博士学位论文") + } else { + docname(anonymous-info(info.school-name) + "\n硕士学位论文") + } + } else if info.degreetype == "professional" { + if info.is-fulltime { + docname(anonymous-info(info.school-name) + "\n硕士专业学位论文(全日制)") + } else { + docname(anonymous-info(info.school-name) + "\n硕士专业学位论文(非全日制)") + } + } + ) + // 论文题目 + grid( + columns: 15.43cm, + rows: 2.67cm, + align: center, + title(info.title.join("\n"), font: 字体.黑体, size: 字号.二号), + ) + + // 学生与指导老师信息 + { + set align(center+horizon) + block(width: 15.43cm, height: auto, grid( + align: (center, left), + columns: (3.99cm, auto), + rows: (1.25cm, auto, 1.25cm, auto, auto), + info-style("姓名", align-type: "justify"), + info-style(anonymous-info(info.author)), + ..(if info.degreetype == "professional" {( + { + info-style("专业学位类型", align-type: "justify") + }, + // info-style(info.degree + "(" + info.major + ")"), + info-style(anonymous-info(info.degree)), + )} else {( + info-style("专业名称", align-type: "justify"), + info-style(anonymous-info(info.major)), + )}), + info-style("指导教师", align-type: "justify"), + info-style(info.supervisor.map(str => anonymous-info(str)).intersperse(h(1em)).sum()), + ..(if info.supervisor-ii != () {( + info-style(" "), + info-style(info.supervisor-ii.map(str => anonymous-info(str)).intersperse(h(1em)).sum()), + )} else { () }), + info-style("培养单位", align-type: "justify"), + info-style(anonymous-info(info.department.join("\n"))), + )) + v((9.54cm-(1.25cm+1.25cm+1.25cm+1.25cm+1.25cm))/2) + } + + { + set align(center+bottom) + grid( + rows: 2.67cm, + columns: 15.43cm, + align: center, + text(datetime-zh-display(info.submit-date, anonymous: anonymous), font: 字体.宋体, size: 字号.三号) + ) + } + pagebreak() // 换页 + if twoside { + pagebreak() // 空白页 + } + + + // 英文题名页 + grid( + rows: 1.64cm, + columns: 15.43cm, + align: center, + if info.degreetype == "academic" { + if info.doctype == "doctor" { + docname-en("A Dissertation Submitted to "+ anonymous-info(info.school-name-en) + + "For the Doctor Degree of " + anonymous-info(info.degree-en)) + } else { + docname-en("A Dissertation Submitted to "+ anonymous-info(info.school-name-en) + + "For the Master Degree of " + anonymous-info(info.degree-en)) + } + } else if info.degreetype == "professional" { + if info.is-fulltime { + docname-en("A Dissertation Submitted to "+ anonymous-info(info.school-name-en) + + "\nFor the Full-Time Master of Professional Degree of\n" + anonymous-info(info.degree-en)) + } else { + docname-en("A Dissertation Submitted to "+ anonymous-info(info.school-name-en) + + "\nFor the Part-Time Master of Professional Degree of\n" + anonymous-info(info.degree-en)) + } + } + ) + v(2.73cm) + //论文题目 + grid( + rows: 2.67cm, + columns: 15.43cm, + align: center, + title-en(info.title-en.join("\n")), + ) + + // 学生与指导老师信息 + { + set align(center+horizon) + block(width: 15.43cm, height: auto, grid( + align: (right, left), + columns: (6.99cm, auto), + rows: (1.25cm, auto, 1.25cm, auto, auto), + ..(if info.doctype == "doctor" {( + { + info-style("Ph.D. Candidate: ", align-type: right) + }, + info-style(anonymous-info(info.author-en)), + )} else {( + info-style("Master Candidate: ", align-type: right), + info-style(anonymous-info(info.author-en)), + )}), + ..(if info.degreetype == "professional" {( + { + info-style("Professional Degree Type: ", align-type: right) + }, + info-style(anonymous-info(info.degree-en)), + )} else {( + info-style("Major: ", align-type: right), + info-style(anonymous-info(info.major-en)), + )}), + info-style("Supervisor: ", align-type: right), + info-style(info.supervisor-en.map(str => anonymous-info(str)).intersperse(h(0.66em)).sum()), + ..(if info.supervisor-ii-en != () {( + info-style(" "), + info-style(info.supervisor-ii-en.map(str => anonymous-info(str)).intersperse(h(0.66em)).sum()), + )} else { () }), + )) + v((9.54cm-(1.25cm+1.25cm+1.25cm+1.25cm+1.25cm))/2) + } + + { + set align(center+bottom) + grid( + rows: 3.55cm, + columns: auto, + align: center, + if anonymous { + address-en("▢▢▢▢▢▢\n▢▢▢▢▢") + } else { + address-en("China University of Geosciences\nWuhan 430074 P.R. China") + } + ) + } + pagebreak() // 换页 + if twoside { + pagebreak() // 空白页 + } +} + +// 封面测试代码 +// #import "../../mythesis/others/test-text.typ": thesis-info +// #show: postgraduate-titlepage(info: thesis-info, anonymous: true) diff --git a/packages/preview/modern-cug-thesis/0.2.6/template/chapters/chapter1.typ b/packages/preview/modern-cug-thesis/0.2.6/template/chapters/chapter1.typ new file mode 100644 index 000000000..16fd2bb1e --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/template/chapters/chapter1.typ @@ -0,0 +1,72 @@ += 正 文 + +== 正文子标题 + +=== 正文子子标题 + +=== test + +==== test2 + +== 2.2 + +=== 2.2.1 + +==== 2.2.1.1 + +=== 2.2.2 + +==== 2.2.2.1 +@wang2022keypointbased @wang2022keypointbased @chen2023bsnet @xiao2023adnet +=== 2.2.3 + +==== 2.2.3.1 +=== 2.2.4 + +==== 2.2.4.1 + +== 2.3 +=== 2.3.1 + +==== 2.3.1.1 + +=== 2.3.2 + +==== 2.3.2.1 + +=== 2.3.3 + +==== 2.3.3.1 + +== 2.4 + +=== 2.4.1 + +==== 2.4.1.1 + +=== 2.4.2 + +==== 2.4.2.1 + +=== 2.4.3 + +==== 2.4.3.1 + +== 2.5 + +=== 2.5.1 + +==== 2.5.1.1 + +=== 2.5.2 +正文内容 + +#figure( + image("../images/A-1.1.2校徽图案.jpg", width: 20%), + caption: [图片测试], +) + +#figure( + image("../images/A-1.1.2校徽图案.jpg", width: 20%), + caption: [图片测试], +) \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/template/chapters/intro.typ b/packages/preview/modern-cug-thesis/0.2.6/template/chapters/intro.typ new file mode 100644 index 000000000..ca444bb9e --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/template/chapters/intro.typ @@ -0,0 +1,94 @@ + += 导 论 + +== 列表 + +=== 无序列表 + +- 无序列表项一 +- 无序列表项二 + - 无序子列表项一 + - 无序子列表项二 + +=== 有序列表 + ++ 有序列表项一 ++ 有序列表项二 + + 有序子列表项一 + + 有序子列表项二 + +=== 术语列表 + +/ 术语一: 术语解释 +/ 术语二: 术语解释 + +== 图表 + +引用@tbl:timing,引用@tbl:timing-tlt,以及@fig:nju-logo。引用图表时,表格和图片分别需要加上 `tbl:`和`fig:` 前缀才能正常显示编号。 + +#align(center, (stack(dir: ltr)[ + #figure( + table( + align: center + horizon, + columns: 4, + [t], [1], [2], [3], + [y], [0.3s], [0.4s], [0.8s], + ), + caption: [常规表], + ) +][ + #h(50pt) +][ + #figure( + table( + columns: 4, + stroke: none, + table.hline(), + [t], [1], [2], [3], + table.hline(stroke: .5pt), + [y], [0.3s], [0.4s], [0.8s], + table.hline(), + ), + caption: [三线表], + ) +])) + +#figure( + image("../images/A-1.1.2校徽图案.jpg", width: 20%), + caption: [图片测试], +) + + +== 数学公式 + +可以像 Markdown 一样写行内公式 $x + y$,以及带编号的行间公式: + +$ phi.alt := (1 + sqrt(5)) / 2 $ + +引用数学公式需要加上 `eqt:` 前缀,则由@eqt:ratio,我们有: + +$ F_n = floor(1 / sqrt(5) phi.alt^n) $ + +我们也可以通过 `<->` 标签来标识该行间公式不需要编号 + +$ y = integral_1^2 x^2 dif x $ <-> + +而后续数学公式仍然能正常编号。 + +$ F_n = floor(1 / sqrt(5) phi.alt^n) $ + +== 参考文献 + +可以像这样引用参考文献:图书#[@蒋有绪1998]和会议#[@中国力学学会1990]。 + +== 代码块 + +代码块支持语法高亮。引用时需要加上 `lst:` @lst:code + +#figure( + ```py + def add(x, y): + return x + y + ```, + caption:[代码块], +) diff --git "a/packages/preview/modern-cug-thesis/0.2.6/template/images/A-1.1.2\346\240\241\345\276\275\345\233\276\346\241\210.jpg" "b/packages/preview/modern-cug-thesis/0.2.6/template/images/A-1.1.2\346\240\241\345\276\275\345\233\276\346\241\210.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..c8721cbd3b5cf8ec90392c618c284a96665f8c4d GIT binary patch literal 205214 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

I=c#rqRXoK}@U^FB-* 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 literal 0 HcmV?d00001 diff --git "a/packages/preview/modern-cug-thesis/0.2.6/template/images/\347\244\272\346\204\217\345\233\2761.png" "b/packages/preview/modern-cug-thesis/0.2.6/template/images/\347\244\272\346\204\217\345\233\2761.png" new file mode 100644 index 0000000000000000000000000000000000000000..1b88c452a8908262ec69655d60eee19b8ff02d61 GIT binary patch literal 814309 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 literal 0 HcmV?d00001 diff --git a/packages/preview/modern-cug-thesis/0.2.6/template/ref.bib b/packages/preview/modern-cug-thesis/0.2.6/template/ref.bib new file mode 100644 index 000000000..6f26b158e --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/template/ref.bib @@ -0,0 +1,692 @@ +@book{蒋有绪1998, + title={中国森林群落分类及其群落学特征}, + author={蒋有绪 and 郭泉水 and 马娟 and others}, + year={1998}, + publisher={科学出版社}, + address={北京}, + pages={11-12}, +} + +@inproceedings{中国力学学会1990, + title={第3届全国实验流体力学学术会议论文集}, + author={中国力学学会}, + year={1990}, + address={天津}, + publisher={**出版社}, + pages={20-24} +} + +@techreport{WHO1970, + title={World Health Organization. Factors Regulating the Immune Response: Report of WHO Scientific Group}, + year={1970}, + institution={WHO}, + address={Geneva} +} + +@phdthesis{张志祥1998, + author = {张志祥}, + title = {间断动力系统的随机扰动及其在守恒律方程中的应用}, + school = {北京大学数学学院}, + address = {北京}, + year = {1998}, + pages = {50-55} +} + +@patent{河北绿洲2001, + title={一种荒漠化地区生态植被综合培育种植方法:中国,01129210.5}, + author={河北绿洲生态环境科技有限公司}, + year={2001}, + type={patent}, + number={01129210.5}, + note={2001-10-24[2002-05-28]}, + url={http://211.152.9.47/sipoasp/zlijs/hyjs-yxnew. asp?recid=01129210.5&leixin} +} + +@standard{GB/T2659-1986, + title = {世界各国和地区名称代码}, + author = {国家标准局信息分类编码研究所}, + year = {1986}, + howpublished = {全国文献工作标准化技术委员会. 文献工作国家标准汇编:3.北京:中国标准出版社,1988:59-92.}, + note = {GB/T 2659-1986} +} + + +@article{李炳穆2000, + title={理想的图书馆员和信息专家的素质与形象}, + author={李炳穆}, + journal={图书情报工作}, + year={2000}, + volume={2000}, + number={2}, + pages={5-8} +} + +@article{丁文祥2000, + title={数字革命与竞争国际化}, + author={丁文祥}, + journal={中国青年报}, + year={2000}, + month={11-20}, + number={15} +} + +@article{江向东1999, + title={互联网环境下的信息处理与图书管理系统解决方案}, + author={江向东}, + journal={情报学报}, + year={1999}, + volume={18}, + number={2}, + pages={4}, + note={2000-01-18}, + url={http://www.chinainfo.gov.cn/periodical/gbxb/gbxb99/gbxb990203} +} + +@article{CHRISTINE1998, + title={Plant physiology:plant biology in the Genome Era}, + author={M CHRISTINE}, + journal={Science}, + year={1998}, + volume={281}, + pages={331-332}, + note={1998-09-23}, + url={http://www.sciencemag.org/cgi/collection/anatmorp} +} + + +@inproceedings{zheng2022clrnet, + address = {New Orleans, LA, USA}, + title = {{CLRNet}: {Cross} {Layer} {Refinement} {Network} for {Lane} {Detection}}, + isbn = {978-1-66546-946-3}, + shorttitle = {{CLRNet}}, + url = {https://ieeexplore.ieee.org/document/9879280/}, + doi = {10.1109/CVPR52688.2022.00097}, + abstract = {Lane is critical in the vision navigation system of the intelligent vehicle. Naturally, lane is a traffic sign with high-level semantics, whereas it owns the specific local pattern which needs detailed low-level features to localize accurately. Using different feature levels is of great importance for accurate lane detection, but it is still underexplored. In this work, we present Cross Layer Refinement Network (CLRNet) aiming at fully utilizing both highlevel and low-level features in lane detection. In particular, it first detects lanes with high-level semantic features then performs refinement based on low-level features. In this way, we can exploit more contextual information to detect lanes while leveraging local detailed lane features to improve localization accuracy. We present ROIGather to gather global context, which further enhances the feature representation of lanes. In addition to our novel network design, we introduce Line IoU loss which regresses the lane line as a whole unit to improve the localization accuracy. Experiments demonstrate that the proposed method greatly outperforms the state-of-the-art lane detection approaches.}, + language = {en}, + urldate = {2022-11-14}, + booktitle = {2022 {IEEE}/{CVF} {Conference} on {Computer} {Vision} and {Pattern} {Recognition} ({CVPR})}, + publisher = {IEEE}, + author = {Zheng, Tu and Huang, Yifei and Liu, Yang and Tang, Wenjian and Yang, Zheng and Cai, Deng and He, Xiaofei}, + month = jun, + year = {2022}, + note = {TLDR: This work presents Cross Layer Refinement Network (CLRNet), a novel network design which first detects lanes with high-level semantic features then performs refinement based on low-level features and introduces Line IoU loss which regresses the lane line as a whole unit to improve the localization accuracy.}, + keywords = {/unread, 📒, ⛔ No INSPIRE recid found}, + pages = {888--897}, + file = {Zheng 等 - 2022 - CLRNet Cross Layer Refinement Network for Lane De.pdf:D\:\\bw_ch\\Zotero\\storage\\PMLECK6C\\Zheng 等 - 2022 - CLRNet Cross Layer Refinement Network for Lane De.pdf:application/pdf}, +} + +@article{liPETDetProposalEnhancement2023, + title = {{PETDet}: {Proposal} {Enhancement} for {Two}-{Stage} {Fine}-{Grained} {Object} {Detection}}, + volume = {62}, + issn = {0196-2892, 1558-0644}, + shorttitle = {{PETDet}}, + url = {http://arxiv.org/abs/2312.10515}, + doi = {10/gtd5pk}, + abstract = {Fine-grained object detection (FGOD) extends object detection with the capability of fine-grained recognition. In recent two-stage FGOD methods, the region proposal serves as a crucial link between detection and fine-grained recognition. However, current methods overlook that some proposal-related procedures inherited from general detection are not equally suitable for FGOD, limiting the multi-task learning from generation, representation, to utilization. In this paper, we present PETDet (Proposal Enhancement for Two-stage fine-grained object detection) to better handle the sub-tasks in two-stage FGOD methods. Firstly, an anchor-free Quality Oriented Proposal Network (QOPN) is proposed with dynamic label assignment and attention-based decomposition to generate high-quality oriented proposals. Additionally, we present a Bilinear Channel Fusion Network (BCFN) to extract independent and discriminative features of the proposals. Furthermore, we design a novel Adaptive Recognition Loss (ARL) which offers guidance for the R-CNN head to focus on high-quality proposals. Extensive experiments validate the effectiveness of PETDet. Quantitative analysis reveals that PETDet with ResNet50 reaches state-of-the-art performance on various FGOD datasets, including FAIR1M-v1.0 (42.96 AP), FAIR1M-v2.0 (48.81 AP), MAR20 (85.91 AP) and ShipRSImageNet (74.90 AP). The proposed method also achieves superior compatibility between accuracy and inference speed. Our code and models will be released at https://github.com/canoe-Z/PETDet.}, + language = {en}, + urldate = {2023-12-27}, + journal = {IEEE Transactions on Geoscience and Remote Sensing}, + author = {Li, Wentao and Zhao, Danpei and Yuan, Bo and Gao, Yue and Shi, Zhenwei}, + year = {2023}, + note = {arXiv:2312.10515 [cs] +JCR分区: Q1 +中科院分区升级版: 地球科学1区 +影响因子: 7.5 +5年影响因子: 7.6 +EI: 是 +CCF: B +中国地质大学: 工程技术T2}, + keywords = {Computer Science - Computer Vision and Pattern Recognition, /unread}, + pages = {1--1}, + file = {arXiv.org Snapshot:D\:\\bw_ch\\Zotero\\storage\\TVWQD4BH\\2312.html:text/html;arXiv.org Snapshot:D\:\\bw_ch\\Zotero\\storage\\G7DUHD6V\\2312.html:text/html;Li et al_2023_PETDet.pdf:D\:\\bw_ch\\Zotero\\storage\\V59WQC5V\\Li et al_2023_PETDet.pdf:application/pdf}, +} + +@inproceedings{wang2022keypointbased, + address = {New Orleans, LA, USA}, + title = {A {Keypoint}-based {Global} {Association} {Network} for {Lane} {Detection}}, + isbn = {978-1-66546-946-3}, + url = {https://ieeexplore.ieee.org/document/9879757/}, + doi = {10.1109/CVPR52688.2022.00145}, + abstract = {Lane detection is a challenging task that requires predicting complex topology shapes of lane lines and distinguishing different types of lanes simultaneously. Earlier works follow a top-down roadmap to regress predefined anchors into various shapes of lane lines, which lacks enough flexibility to fit complex shapes of lanes due to the fixed anchor shapes. Lately, some works propose to formulate lane detection as a keypoint estimation problem to describe the shapes of lane lines more flexibly and gradually group adjacent keypoints belonging to the same lane line in a pointby-point manner, which is inefficient and time-consuming during postprocessing. In this paper, we propose a Global Association Network (GANet) to formulate the lane detection problem from a new perspective, where each keypoint is directly regressed to the starting point of the lane line instead of point-by-point extension. Concretely, the association of keypoints to their belonged lane line is conducted by predicting their offsets to the corresponding starting points of lanes globally without dependence on each other, which could be done in parallel to greatly improve efficiency. In addition, we further propose a Lane-aware Feature Aggregator (LFA), which adaptively captures the local correlations between adjacent keypoints to supplement local information to the global association. Extensive experiments on two popular lane detection benchmarks show that our method outperforms previous methods with F1 score of 79.63\% on CULane and 97.71\% on Tusimple dataset with high FPS. The code will be released at https://github.com/Wolfwjs/GANet.}, + language = {en}, + urldate = {2022-11-14}, + booktitle = {2022 {IEEE}/{CVF} {Conference} on {Computer} {Vision} and {Pattern} {Recognition} ({CVPR})}, + publisher = {IEEE}, + author = {Wang, Jinsheng and Ma, Yinchao and Huang, Shaofei and Hui, Tianrui and Wang, Fei and Qian, Chen and Zhang, Tianzhu}, + month = jun, + year = {2022}, + note = {TLDR: A Global Association Network (GANet) is proposed to formulate the lane detection problem from a new perspective, where each keypoint is directly regressed to the starting point of the lane line instead of point-by-point extension, which outperforms previous methods.}, + keywords = {/unread}, + pages = {1382--1391}, + file = {Wang 等 - 2022 - A Keypoint-based Global Association Network for La.pdf:D\:\\bw_ch\\Zotero\\storage\\8G7EDWDV\\Wang 等 - 2022 - A Keypoint-based Global Association Network for La.pdf:application/pdf}, +} + +@inproceedings{lin2017feature, + address = {Honolulu, HI}, + title = {Feature {Pyramid} {Networks} for {Object} {Detection}}, + isbn = {978-1-5386-0457-1}, + url = {http://ieeexplore.ieee.org/document/8099589/}, + doi = {10.1109/CVPR.2017.106}, + abstract = {Feature pyramids are a basic component in recognition systems for detecting objects at different scales. But recent deep learning object detectors have avoided pyramid representations, in part because they are compute and memory intensive. In this paper, we exploit the inherent multi-scale, pyramidal hierarchy of deep convolutional networks to construct feature pyramids with marginal extra cost. A topdown architecture with lateral connections is developed for building high-level semantic feature maps at all scales. This architecture, called a Feature Pyramid Network (FPN), shows significant improvement as a generic feature extractor in several applications. Using FPN in a basic Faster R-CNN system, our method achieves state-of-the-art singlemodel results on the COCO detection benchmark without bells and whistles, surpassing all existing single-model entries including those from the COCO 2016 challenge winners. In addition, our method can run at 5 FPS on a GPU and thus is a practical and accurate solution to multi-scale object detection. Code will be made publicly available.}, + language = {en}, + urldate = {2024-03-07}, + booktitle = {2017 {IEEE} {Conference} on {Computer} {Vision} and {Pattern} {Recognition} ({CVPR})}, + publisher = {IEEE}, + author = {Lin, Tsung-Yi and Dollar, Piotr and Girshick, Ross and He, Kaiming and Hariharan, Bharath and Belongie, Serge}, + month = jul, + year = {2017}, + keywords = {/unread}, + pages = {936--944}, + file = {Lin 等 - 2017 - Feature Pyramid Networks for Object Detection.pdf:D\:\\bw_ch\\Zotero\\storage\\KPWAITKE\\Lin 等 - 2017 - Feature Pyramid Networks for Object Detection.pdf:application/pdf}, +} + +@inproceedings{zhangVIL100NewDataset2021, + title = {{VIL}-100: {A} {New} {Dataset} and {A} {Baseline} {Model} for {Video} {Instance} {Lane} {Detection}}, + shorttitle = {{VIL}-100}, + url = {https://ieeexplore.ieee.org/document/9710077}, + doi = {10/gp8m7x}, + abstract = {Lane detection plays a key role in autonomous driving. While car cameras always take streaming videos on the way, current lane detection works mainly focus on individual images (frames) by ignoring dynamics along the video. In this work, we collect a new video instance lane detection (VIL-100) dataset, which contains 100 videos with in total 10,000 frames, acquired from different real traffic scenarios. All the frames in each video are manually annotated to a high-quality instance-level lane annotation, and a set of frame-level and video-level metrics are included for quantitative performance evaluation. Moreover, we propose a new baseline model, named multi-level memory aggregation network (MMA-Net), for video instance lane detection. In our approach, the representation of current frame is enhanced by attentively aggregating both local and global memory features from other frames. Experiments on the new collected dataset show that the proposed MMA-Net outperforms state-of-the-art lane detection methods and video object segmentation methods. We release our dataset and code at https://github.com/yujun0-0/MMA-Net.}, + language = {en}, + urldate = {2024-01-17}, + booktitle = {2021 {IEEE}/{CVF} {International} {Conference} on {Computer} {Vision} ({ICCV})}, + author = {Zhang, Yujun and Zhu, Lei and Feng, Wei and Fu, Huazhu and Wang, Mingqian and Li, Qingxia and Li, Cheng and Wang, Song}, + month = oct, + year = {2021}, + note = {ISSN: 2380-7504}, + keywords = {/unread}, + pages = {15661--15670}, + file = {IEEE Xplore Abstract Record:D\:\\bw_ch\\Zotero\\storage\\35I4UD44\\9710077.html:text/html;Zhang et al_2021_VIL-100.pdf:D\:\\bw_ch\\Zotero\\storage\\DG25B5IW\\Zhang et al_2021_VIL-100.pdf:application/pdf}, +} + +@article{panSpatialDeepSpatial2018, + title = {Spatial as {Deep}: {Spatial} {CNN} for {Traffic} {Scene} {Understanding}}, + volume = {32}, + copyright = {Copyright (c)}, + issn = {2374-3468}, + shorttitle = {Spatial as {Deep}}, + url = {https://ojs.aaai.org/index.php/AAAI/article/view/12301}, + doi = {10/gqzs6n}, + abstract = {Convolutional neural networks (CNNs) are usually built by stacking convolutional operations layer-by-layer. Although CNN has shown strong capability to extract semantics from raw pixels, its capacity to capture spatial relationships of pixels across rows and columns of an image is not fully explored. These relationships are important to learn semantic objects with strong shape priors but weak appearance coherences, such as traffic lanes, which are often occluded or not even painted on the road surface as shown in Fig. 1 (a). In this paper, we propose Spatial CNN (SCNN), which generalizes traditional deep layer-by-layer convolutions to slice-by-slice convolutions within feature maps, thus enabling message passings between pixels across rows and columns in a layer. Such SCNN is particular suitable for long continuous shape structure or large objects, with strong spatial relationship but less appearance clues, such as traffic lanes, poles, and wall. We apply SCNN on a newly released very challenging traffic lane detection dataset and Cityscapse dataset. The results show that SCNN could learn the spatial relationship for structure output and significantly improves the performance. We show that SCNN outperforms the recurrent neural network (RNN) based ReNet and MRF+CNN (MRFNet) in the lane detection dataset by 8.7\% and 4.6\% respectively. Moreover, our SCNN won the 1st place on the TuSimple Benchmark Lane Detection Challenge, with an accuracy of 96.53\%.}, + language = {en}, + number = {1}, + urldate = {2024-01-17}, + journal = {Proceedings of the AAAI Conference on Artificial Intelligence}, + author = {Pan, Xingang and Shi, Jianping and Luo, Ping and Wang, Xiaogang and Tang, Xiaoou}, + month = apr, + year = {2018}, + note = {Number: 1}, + keywords = {/unread, Spatial CNN}, + file = {Pan et al_2018_Spatial as Deep.pdf:D\:\\bw_ch\\Zotero\\storage\\66N5BXUL\\Pan et al_2018_Spatial as Deep.pdf:application/pdf}, +} + +@article{liLineCNNEndEndTraffic2020, + title = {Line-{CNN}: {End}-to-{End} {Traffic} {Line} {Detection} {With} {Line} {Proposal} {Unit}}, + volume = {21}, + issn = {1558-0016}, + shorttitle = {Line-{CNN}}, + url = {https://ieeexplore.ieee.org/document/8624563}, + doi = {10/ghfvqj}, + abstract = {The task of traffic line detection is a fundamental yet challenging problem. Previous approaches usually conduct traffic line detection via a two-stage way, namely the line segment detection followed by a segment clustering, which is very likely to ignore the global semantic information of an entire line. To address the problem, we propose an end-to-end system called Line-CNN (L-CNN), in which the key component is a novel line proposal unit (LPU). The LPU utilizes line proposals as references to locate accurate traffic curves, which forces the system to learn the global feature representation of the entire traffic lines. We benchmark the proposed L-CNN on two public datasets including MIKKI and TuSimple, and the results suggest that L-CNN outperforms the state-of-the-art methods. In addition, L-CNN can run at approximately 30 f/s on a Titan X GPU, which indicates the practicability and effectiveness of L-CNN for real-time intelligent self-driving systems.}, + language = {en}, + number = {1}, + urldate = {2024-01-21}, + journal = {IEEE Transactions on Intelligent Transportation Systems}, + author = {Li, Xiang and Li, Jun and Hu, Xiaolin and Yang, Jian}, + month = jan, + year = {2020}, + note = {Conference Name: IEEE Transactions on Intelligent Transportation Systems}, + keywords = {/unread}, + pages = {248--258}, + file = {IEEE Xplore Abstract Record:D\:\\bw_ch\\Zotero\\storage\\V48TJ2NM\\8624563.html:text/html;Li et al_2020_Line-CNN.pdf:D\:\\bw_ch\\Zotero\\storage\\YHP3KWQZ\\Li et al_2020_Line-CNN.pdf:application/pdf;Li et al_2020_Line-CNN.pdf:D\:\\bw_ch\\Zotero\\storage\\KEMFMEQD\\Li et al_2020_Line-CNN.pdf:application/pdf}, +} + +@article{tabeliniLaneMarkingDetection2022, + title = {Lane {Marking} {Detection} and {Classification} using {Spatial}-{Temporal} {Feature} {Pooling}}, + url = {https://ieeexplore.ieee.org/document/9892478}, + doi = {10.1109/IJCNN55064.2022.9892478}, + abstract = {The lane detection problem has been extensively researched in the past decades, especially since the advent of deep learning. Despite the numerous works proposing solutions to the localization task (i.e., localizing the lane boundaries in an input image), the classification task has not seen the same focus. Nonetheless, knowing the type of lane boundary, particularly that of the ego lane, can be very useful for many applications. For instance, a vehicle might not be allowed by law to overtake depending on the type of the ego lane. Beyond that, very few works take advantage of the temporal information available in the videos captured by the vehicles: most methods employ a single-frame approach. In this work, building upon the recent LaneATT model, we propose an approach to exploit the temporal information and integrate the classification task into the model. Our results show that the proposed modifications can improve the detection performance on the most recent benchmark by 2.34 \%, establishing a new state-of-the-art. Finally, an extensive evaluation shows that it enables a high classification performance (89.37 \%) that serves as a future benchmark for the field.}, + language = {en}, + urldate = {2024-05-22}, + journal = {2022 {International} {Joint} {Conference} on {Neural} {Networks} ({IJCNN})}, + author = {Tabelini, Lucas and Berriel, Rodrigo and De Souza, Alberto F. and Badue, Claudine and Oliveira-Santos, Thiago}, + month = jul, + year = {2022}, + note = {ISSN: 2161-4407}, + keywords = {/unread, Deep learning, deep learning, Benchmark testing, lane classification, lane detection, Lane detection, Location awareness, Neural networks, Predictive models, temporal information, Transforms}, + pages = {1--7}, + file = {IEEE Xplore Abstract Record:D\:\\bw_ch\\Zotero\\storage\\FMVBQI5W\\9892478.html:text/html;Tabelini et al_2022_Lane Marking Detection and Classification using Spatial-Temporal Feature Pooling.pdf:D\:\\bw_ch\\Zotero\\storage\\TVK3D2JU\\Tabelini et al_2022_Lane Marking Detection and Classification using Spatial-Temporal Feature Pooling.pdf:application/pdf}, +} + +@article{zhangLaneDetectionModel2022, + title = {Lane {Detection} {Model} {Based} on {Spatio}-{Temporal} {Network} {With} {Double} {Convolutional} {Gated} {Recurrent} {Units}}, + volume = {23}, + issn = {1558-0016}, + url = {https://ieeexplore.ieee.org/document/9364924}, + doi = {10.1109/TITS.2021.3060258}, + abstract = {Lane detection is one of the indispensable and key elements of self-driving environmental perception. Many lane detection models have been proposed, solving lane detection under challenging conditions, including intersection merging and splitting, curves, boundaries, occlusions and combinations of scene types. Nevertheless, lane detection will remain an open problem for some time to come. The ability to cope well with those challenging scenes impacts greatly the applications of lane detection on advanced driver assistance systems (ADASs). In this paper, a spatio-temporal network with double Convolutional Gated Recurrent Units (ConvGRUs) is proposed to address lane detection in challenging scenes. Both of ConvGRUs have the same structures, but different locations and functions in our network. One is used to extract the information of the most likely low-level features of lane markings. The extracted features are input into the next layer of the end-to-end network after concatenating them with the outputs of some blocks. The other one takes some continuous frames as its input to process the spatio-temporal driving information. Extensive experiments on the large-scale TuSimple lane marking challenge dataset and Unsupervised LLAMAS dataset demonstrate that the proposed model can effectively detect lanes in the challenging driving scenes. Our model can outperform the state-of-the-art lane detection models.}, + language = {en}, + number = {7}, + urldate = {2024-05-18}, + journal = {IEEE Transactions on Intelligent Transportation Systems}, + author = {Zhang, Jiyong and Deng, Tao and Yan, Fei and Liu, Wenbo}, + month = jul, + year = {2022}, + note = {Conference Name: IEEE Transactions on Intelligent Transportation Systems +TLDR: A spatio-temporal network with double Convolutional Gated Recurrent Units (ConvGRUs) is proposed to address lane detection in challenging scenes and can outperform the state-of-the-art lane detection models.}, + keywords = {Computer Science - Computer Vision and Pattern Recognition, /unread, Deep learning, Feature extraction, Lane detection, ConvGRUs, convolutional neural network, end-to-end, Image segmentation, Logic gates, Roads, Semantics, spatio-temporal}, + pages = {6666--6678}, + file = {arXiv.org Snapshot:D\:\\bw_ch\\Zotero\\storage\\3ENFZAMD\\2008.html:text/html;Zhang et al_2022_Lane Detection Model Based on Spatio-Temporal Network With Double Convolutional.pdf:D\:\\bw_ch\\Zotero\\storage\\ICIYJGFV\\Zhang et al_2022_Lane Detection Model Based on Spatio-Temporal Network With Double Convolutional.pdf:application/pdf}, +} + +@article{zouRobustLaneDetection2020, + title = {Robust {Lane} {Detection} from {Continuous} {Driving} {Scenes} {Using} {Deep} {Neural} {Networks}}, + volume = {69}, + issn = {0018-9545, 1939-9359}, + url = {http://arxiv.org/abs/1903.02193}, + doi = {10.1109/TVT.2019.2949603}, + abstract = {Lane detection in driving scenes is an important module for autonomous vehicles and advanced driver assistance systems. In recent years, many sophisticated lane detection methods have been proposed. However, most methods focus on detecting the lane from one single image, and often lead to unsatisfactory performance in handling some extremely-bad situations such as heavy shadow, severe mark degradation, serious vehicle occlusion, and so on. In fact, lanes are continuous line structures on the road. Consequently, the lane that cannot be accurately detected in one current frame may potentially be inferred out by incorporating information of previous frames. To this end, we investigate lane detection by using multiple frames of a continuous driving scene, and propose a hybrid deep architecture by combining the convolutional neural network (CNN) and the recurrent neural network (RNN). Specifically, information of each frame is abstracted by a CNN block, and the CNN features of multiple continuous frames, holding the property of time-series, are then fed into the RNN block for feature learning and lane prediction. Extensive experiments on two large-scale datasets demonstrate that, the proposed method outperforms the competing methods in lane detection, especially in handling difficult situations.}, + language = {en}, + number = {1}, + urldate = {2024-05-18}, + journal = {IEEE Transactions on Vehicular Technology}, + author = {Zou, Qin and Jiang, Hanwen and Dai, Qiyu and Yue, Yuanhao and Chen, Long and Wang, Qian}, + month = jan, + year = {2020}, + note = {arXiv:1903.02193 [cs]}, + keywords = {Computer Science - Computer Vision and Pattern Recognition, /unread}, + pages = {41--54}, + file = {arXiv.org Snapshot:D\:\\bw_ch\\Zotero\\storage\\WPNTN9MA\\1903.html:text/html;Zou et al_2020_Robust Lane Detection from Continuous Driving Scenes Using Deep Neural Networks.pdf:D\:\\bw_ch\\Zotero\\storage\\XCPGMC2Q\\Zou et al_2020_Robust Lane Detection from Continuous Driving Scenes Using Deep Neural Networks.pdf:application/pdf}, +} + +@inproceedings{dai2021attentional, + title = {Attentional {Feature} {Fusion}}, + url = {https://openaccess.thecvf.com/content/WACV2021/html/Dai_Attentional_Feature_Fusion_WACV_2021_paper.html}, + language = {en}, + urldate = {2024-02-29}, + booktitle = {{IEEE}/{CVF} {Winter} {Conference} on {Applications} of {Computer} {Vision} ({WACV})}, + author = {Dai, Yimian and Gieseke, Fabian and Oehmcke, Stefan and Wu, Yiquan and Barnard, Kobus}, + year = {2021}, + keywords = {/unread}, + pages = {3560--3569}, + file = {Dai et al_2021_Attentional Feature Fusion.pdf:D\:\\bw_ch\\Zotero\\storage\\GGL4K4Q8\\Dai et al_2021_Attentional Feature Fusion.pdf:application/pdf}, +} + +@article{liang2020lane, + title = {Lane {Detection}: a {Survey} with {New} {Results}}, + volume = {35}, + language = {en}, + number = {3}, + journal = {Journal of Computer Science and Technology}, + author = {Liang, Dun and Guo, Yuan-Chen and Zhang, Shao-Kui and Mu, Tai-Jiang and Huang, Xiaolei}, + year = {2020}, + note = {Publisher: Springer Science and Business Media LLC}, + keywords = {/unread}, + pages = {493--505}, +} + +@article{YinZhangCaiZiDongJiaShiGaoJingDiTuDeXinXiChuanShuMoXing2024, + title = {自动驾驶高精地图的信息传输模型}, + volume = {49}, + issn = {1671-8860}, + url = {https://kns.cnki.net/kcms2/article/abstract?v=axnrJTP8flwIIog7bfPjWLX9aiyRtZbrG_-hCEGoEIqm_CFj25YOCJF2F_aE4lhbNF0LKF0pkdIZ99jB-BL-E5IRL-a3uee5JFMJ2CI_Mv5ikwYrmLv_G8YG2aIGMsqWkrVSOpzKO7lVTfvnyE_Gcw==&uniplatform=NZKPT&language=CHS}, + doi = {10.13203/j.whugis20230135}, + abstract = {高精地图的“非视觉”和面向机器特性,使其与传统面向人的时空产品有明显不同,相应的描述地图主、客体及其与产品之间关系的传输模型也面临巨大变革。已有的传输模型重构了上述关系,包括新增用户个性信息及其传输,但也存在信息传递工具仍采用面向人而非机器的地图语言等不足。为此,结合自动驾驶中地图信息的传输特点,构建面向机器认知的高精地图信息传输模型,通过对已有的传输模型进行扩展:GIS语言代替地图语言,将用户个性信息整合到高精地图的用户图层中,将行动指导扩展为行动实践。研究结果表明,构建的全机器认知的高精地图信息传输模型实现了地图信息认知的主体由人到机器的扩展,适应了高精地图在感知、定位、规划、控制等传输过程中全人工智能的特性。所提出的模型一方面有助于准确把握高精地图的本质及内容结构,提升认知效果;另一方面,对驾驶服务具有重要的指导作用,包括内容选取、表达方法、系统功能框架设计等,提高传输效率。}, + language = {zh}, + number = {4}, + urldate = {2024-05-22}, + journal = {武汉大学学报(信息科学版)}, + author = {{尹章才} and {齐如煜} and {应申}}, + year = {2024}, + keywords = {/unread, 地图空间认知, 地图信息传输模型, 高精地图, 自动驾驶}, + pages = {527--536}, +} + +@inproceedings{cai2018cascade, + title = {Cascade {R}-{CNN}: {Delving} {Into} {High} {Quality} {Object} {Detection}.}, + language = {en}, + booktitle = {Computer {Vision} and {Pattern} {Recognition} ({CVPR})}, + author = {Cai, Zhaowei and Vasconcelos, Nuno}, + year = {2018}, + keywords = {/unread}, + pages = {6154--6162}, +} + +@article{ZangJinHuanXinNengYuanQiCheChanYeFaZhanGuiHua20212035NianDiaoZhengJieDu2021, + title = {《新能源汽车产业发展规划(2021—2035年)》调整解读}, + issn = {2095-9044}, + url = {https://kns.cnki.net/kcms2/article/abstract?v=axnrJTP8flzVDV_4zpnHJrtTvp0I62PSoywJYXyolsK6san85xDaTLNyGCiLlybAgiaur5yQcox4NCVX_O4Ed8KAl1ozIf5sRnoD4mMVsn4MId8S0roZczzm3JLTc_ZfYGRo9ZbsIW8mYya8c07b2A==&uniplatform=NZKPT&language=CHS}, + doi = {10.16173/j.cnki.ame.2021.z1.019}, + abstract = {{\textless}正{\textgreater}2020年11月2日,国务院办公厅发布《新能源汽车产业发展规划(2021—2035年)》(以下简称《规划》),这是继《节能与新能源汽车产业发展规划(2012—2020年)》后,我国关于新能源汽车产业的又一纲领性文件,明确了中国新能源汽车发展的愿景和相应部署。值得一提的是,由于油耗问题已经有相应的标准和要求,所以此次《规划》并未涉及传统燃油汽车的节能问题,而是把重点聚焦到新能源汽车产业的发展。}, + language = {zh}, + number = {Z1}, + urldate = {2024-05-22}, + journal = {汽车工艺师}, + author = {{臧金环} and {李春玲}}, + year = {2021}, + keywords = {/unread, 《新能源汽车产业发展规划(2021—2035年)》, 充电基础设施, 氢燃料汽车, 新能源汽车产业, 信息通信融合, 智能网联汽车}, + pages = {32--34}, + file = {臧金环_李春玲_2021_《新能源汽车产业发展规划(2021—2035年)》调整解读.pdf:D\:\\bw_ch\\Zotero\\storage\\KVMWBQDJ\\臧金环_李春玲_2021_《新能源汽车产业发展规划(2021—2035年)》调整解读.pdf:application/pdf}, +} + +@inproceedings{feng2022rethinking, + title = {Rethinking {Efficient} {Lane} {Detection} via {Curve} {Modeling}.}, + language = {en}, + booktitle = {Computer {Vision} and {Pattern} {Recognition} ({CVPR})}, + author = {Feng, Zhengyang and Guo, Shaohua and Tan, Xin and Xu, Ke and Wang, Min and Ma, Lizhuang}, + year = {2022}, + keywords = {/unread}, + pages = {17041--17049}, +} + +@article{jeongTutorialHighDefinitionMap2022, + title = {Tutorial on {High}-{Definition} {Map} {Generation} for {Automated} {Driving} in {Urban} {Environments}}, + volume = {22}, + copyright = {http://creativecommons.org/licenses/by/3.0/}, + issn = {1424-8220}, + url = {https://www.mdpi.com/1424-8220/22/18/7056}, + doi = {10.3390/s22187056}, + abstract = {High-definition (HD) mapping is a promising approach to realize highly automated driving (AD). Although HD maps can be applied to all levels of autonomy, their use is particularly beneficial for autonomy levels 4 or higher. HD maps enable AD systems to see beyond the field of view of conventional sensors, thereby providing accurate and detailed information regarding a driving environment. An HD map is typically separated into a pointcloud map for localization and a vector map for path planning. In this paper, we introduce two separate but successive HD map generation workflows. Of the several stages involved, the registration and mapping processes are essential for creating the pointcloud and vector maps, respectively. To facilitate the readers’ understanding, the processes of these two stages have been recorded and uploaded online. HD maps are typically generated using open-source software (OSS) tools. CloudCompare and ASSURE, as representative tools, are used in this study. The generated HD maps are validated with localization and path-planning modules in Autoware, which is also an OSS stack for AD systems. The generated HD maps enable environmental-monitoring vehicles to successfully operate at level 4 autonomy.}, + language = {en}, + number = {18}, + urldate = {2024-05-22}, + journal = {Sensors}, + author = {Jeong, Jinseop and Yoon, Jun Yong and Lee, Hwanhong and Darweesh, Hatem and Sung, Woosuk}, + month = jan, + year = {2022}, + note = {Number: 18 +Publisher: Multidisciplinary Digital Publishing Institute}, + keywords = {/unread, autonomous driving, high-definition map, localization, path planning}, + pages = {7056}, + file = {Jeong et al_2022_Tutorial on High-Definition Map Generation for Automated Driving in Urban.pdf:D\:\\bw_ch\\Zotero\\storage\\L3HWQHCK\\Jeong et al_2022_Tutorial on High-Definition Map Generation for Automated Driving in Urban.pdf:application/pdf}, +} + +@article{ebrahimisoorchaeiHighDefinitionMapRepresentation2022, + title = {High-{Definition} {Map} {Representation} {Techniques} for {Automated} {Vehicles}}, + volume = {11}, + copyright = {http://creativecommons.org/licenses/by/3.0/}, + issn = {2079-9292}, + url = {https://www.mdpi.com/2079-9292/11/20/3374}, + doi = {10.3390/electronics11203374}, + abstract = {Many studies in the field of robot navigation have focused on environment representation and localization. The goal of map representation is to summarize spatial information in topological and geometrical abstracts. By providing strong priors, maps improve the performance and reliability of automated robots. Due to the transition to fully automated driving in recent years, there has been a constant effort to design methods and technologies to improve the precision of road participants and the environment’s information. Among these efforts is the high-definition (HD) map concept. Making HD maps requires accuracy, completeness, verifiability, and extensibility. Because of the complexity of HD mapping, it is currently expensive and difficult to implement, particularly in an urban environment. In an urban traffic system, the road model is at least a map with sets of roads, lanes, and lane markers. While more research is being dedicated to mapping and localization, a comprehensive review of the various types of map representation is still required. This paper presents a brief overview of map representation, followed by a detailed literature review of HD maps for automated vehicles. The current state of autonomous vehicle (AV) mapping is encouraging, the field has matured to a point where detailed maps of complex environments are built in real time and have been proved useful. Many existing techniques are robust to noise and can cope with a large range of environments. Nevertheless, there are still open problems for future research. AV mapping will continue to be a highly active research area essential to the goal of achieving full autonomy.}, + language = {en}, + number = {20}, + urldate = {2024-05-22}, + journal = {Electronics}, + author = {Ebrahimi Soorchaei, Babak and Razzaghpour, Mahdi and Valiente, Rodolfo and Raftari, Arash and Fallah, Yaser Pourmohammadi}, + month = jan, + year = {2022}, + note = {Number: 20 +Publisher: Multidisciplinary Digital Publishing Institute}, + keywords = {/unread, connected and automated vehicles, high-definition (HD) map, map representation, navigation}, + pages = {3374}, + file = {Ebrahimi Soorchaei et al_2022_High-Definition Map Representation Techniques for Automated Vehicles.pdf:D\:\\bw_ch\\Zotero\\storage\\75U7M9UE\\Ebrahimi Soorchaei et al_2022_High-Definition Map Representation Techniques for Automated Vehicles.pdf:application/pdf}, +} + +@inproceedings{jin2023recursive, + title = {Recursive {Video} {Lane} {Detection}}, + language = {en}, + booktitle = {2023 {IEEE}/{CVF} {International} {Conference} on {Computer} {Vision} ({ICCV})}, + publisher = {IEEE}, + author = {Jin, Dongkwon and Kim, Dahyun and Kim, Chang-Su}, + year = {2023}, + keywords = {/unread}, + pages = {8439--8448}, +} + +@article{ko2022points, + title = {Key {Points} {Estimation} and {Point} {Instance} {Segmentation} {Approach} for {Lane} {Detection}.}, + volume = {23}, + language = {en}, + number = {7}, + journal = {IEEE Transactions on Intelligent Transportation Systems}, + author = {Ko, YeongMin and Lee, Younkwan and Azam, Shoaib and Munir, Farzeen and Jeon, Moongu and Pedrycz, Witold}, + year = {2022}, + keywords = {/unread}, + pages = {8949--8958}, +} + +@article{liuVisionbasedEnvironmentalPerception2023, + title = {Vision-based environmental perception for autonomous driving}, + issn = {0954-4070}, + url = {https://doi.org/10.1177/09544070231203059}, + doi = {10.1177/09544070231203059}, + abstract = {Visual perception plays an important role in autonomous driving. One of the primary tasks is object detection and identification. Since the vision sensor is rich in color and texture information, it can quickly and accurately identify various road information. The commonly used technique is based on extracting and calculating various features of the image. The recent development of deep learning-based method has better reliability and processing speed and has a greater advantage in recognizing complex elements. For depth estimation, vision sensor is also used for ranging due to their small size and low cost. Monocular camera uses image data from a single viewpoint as input to estimate object depth. In contrast, stereo vision is based on parallax and matching feature points of different views, and the application of Deep learning also further improves the accuracy. In addition, Simultaneous Location and Mapping (SLAM) can establish a model of the road environment, thus helping the vehicle perceive the surrounding environment and complete the tasks. In this paper, we introduce and compare various methods of object detection and identification, then explain the development of depth estimation and compare various methods based on monocular, stereo, and RGB-D sensors, next review and compare various methods of SLAM, and finally summarize the current problems and present the future development trends of vision technologies.}, + language = {en}, + urldate = {2024-05-22}, + journal = {Proceedings of the Institution of Mechanical Engineers, Part D: Journal of Automobile Engineering}, + author = {Liu, Fei and Lu, Zihao and Lin, Xianke}, + month = nov, + year = {2023}, + note = {Publisher: IMECHE}, + keywords = {/unread}, + pages = {09544070231203059}, + file = {Liu et al_2023_Vision-based environmental perception for autonomous driving.pdf:D\:\\bw_ch\\Zotero\\storage\\8YFKF7WW\\Liu et al_2023_Vision-based environmental perception for autonomous driving.pdf:application/pdf}, +} + +@inproceedings{liu2021endtoend, + title = {End-to-end {Lane} {Shape} {Prediction} with {Transformers}.}, + language = {en}, + booktitle = {{IEEE}/{CVF} {Winter} {Conference} on {Applications} of {Computer} {Vision} ({WACV})}, + author = {Liu, Ruijin and Yuan, Zejian and Liu, Tie and Xiong, Zhiliang}, + year = {2021}, + keywords = {/unread}, + pages = {3693--3701}, +} + +@inproceedings{liu2021condlanenet, + title = {{CondLaneNet}: a {Top}-to-down {Lane} {Detection} {Framework} {Based} on {Conditional} {Convolution}.}, + language = {en}, + booktitle = {{IEEE} {International} {Conference} on {Computer} {Vision} ({ICCV})}, + author = {Liu, Lizhe and Chen, Xiaohao and Zhu, Siyu and Tan, Ping}, + year = {2021}, + keywords = {/unread}, + pages = {3753--3762}, +} + +@inproceedings{meng2021conditional, + title = {Conditional {DETR} for {Fast} {Training} {Convergence}.}, + language = {en}, + booktitle = {{IEEE} {International} {Conference} on {Computer} {Vision} ({ICCV})}, + author = {Meng, Depu and Chen, Xiaokang and Fan, Zejia and Zeng, Gang and Li, Houqiang and Yuan, Yuhui and Sun, Lei and Wang, Jingdong}, + year = {2021}, + keywords = {/unread}, + pages = {3631--3640}, +} + +@article{qin2024ultra, + title = {Ultra {Fast} {Deep} {Lane} {Detection} with {Hybrid} {Anchor} {Driven} {Ordinal} {Classification}}, + language = {en}, + journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, + author = {Qin, Zequn and Zhang, Pengyi and Li, Xi}, + year = {2024}, + note = {Publisher: IEEE}, + keywords = {/unread}, + pages = {1--14}, +} + +@inproceedings{qu2021focus, + title = {Focus on {Local}: {Detecting} {Lane} {Marker} {From} {Bottom} {Up} via {Key} {Point}.}, + language = {en}, + booktitle = {Computer {Vision} and {Pattern} {Recognition} ({CVPR})}, + author = {Qu, Zhan and Jin, Huan and Zhou, Yang and Yang, Zhen and Zhang, Wei}, + year = {2021}, + keywords = {/unread}, + pages = {14122--14130}, +} + +@inproceedings{su2021structure, + title = {Structure {Guided} {Lane} {Detection}.}, + language = {en}, + booktitle = {International {Joint} {Conference} on {Artificial} {Intelligence} ({IJCAI})}, + author = {Su, Jinming and Chen, Chao and Zhang, Ke and Luo, Junfeng and Wei, Xiaoming and Wei, Xiaolin}, + year = {2021}, + keywords = {/unread}, + pages = {997--1003}, +} + +@inproceedings{torres2020polylanenet, + title = {{PolyLaneNet}: {Lane} {Estimation} via {Deep} {Polynomial} {Regression}.}, + language = {en}, + booktitle = {International {Conference} on {Pattern} {Recognition} ({ICPR})}, + author = {Torres, Lucas Tabelini and Berriel, Rodrigo Ferreira and Paixão, Thiago M. and Badue, Claudine and Souza, Alberto F. De and Oliveira-Santos, Thiago}, + year = {2020}, + keywords = {/unread}, + pages = {6150--6156}, +} + +@inproceedings{torres2021keep, + title = {Keep {Your} {Eyes} on the {Lane}: {Real}-{Time} {Attention}-{Guided} {Lane} {Detection}.}, + language = {en}, + booktitle = {Computer {Vision} and {Pattern} {Recognition} ({CVPR})}, + author = {Torres, Lucas Tabelini and Berriel, Rodrigo Ferreira and Paixão, Thiago M. and Badue, Claudine and Souza, Alberto F. De and Oliveira-Santos, Thiago}, + year = {2021}, + keywords = {/unread}, + pages = {294--302}, +} + +@inproceedings{wangVideoInstanceLane2022, + address = {Lisboa Portugal}, + title = {Video {Instance} {Lane} {Detection} via {Deep} {Temporal} and {Geometry} {Consistency} {Constraints}}, + isbn = {978-1-4503-9203-7}, + url = {https://dl.acm.org/doi/10.1145/3503161.3547914}, + doi = {10.1145/3503161.3547914}, + abstract = {Video instance lane detection is one of the most important tasks in autonomous driving. Due to the very sparse region and weak context in lane annotations, accurately detecting instance-level lanes in real-world traffic scenarios is challenging, especially for scenes with occlusion, bad weather conditions, dim or dazzling lights. Current methods mainly address this problem by integrating features of adjacent video frames to simply encourage temporal constancy for image-level lane detectors. However, most of them ignore lane shape constraint of adjacent frames and geometry consistency of individual lanes, thereby harming the performance of video instance lane detection. In this paper, we propose TGC-Net via temporal and geometry consistency constraints for reliable video instance lane detection. Specifically, we devise a temporal recurrent feature-shift aggregation module (T-RESA) to learn spatio-temporal lane features along horizontal, vertical, and temporal directions of the feature tensor. We further impose temporal consistency constraint by encouraging spatial distribution consistency among the lane features of adjacent frames. Besides, we devise two effective geometry constraints to ensure the integrity and continuity of lane predictions by leveraging pairwise point affinity loss and vanishing point guided geometric context, respectively. Extensive experiments on public benchmark dataset show that our TGC-Net quantitatively and qualitatively outperforms state-of-the-art video instance lane detectors and video object segmentation competitors. Our code and our results have been released at https://github.com/wmq12345/TGC-Net.}, + language = {en}, + urldate = {2024-05-22}, + booktitle = {Proceedings of the 30th {ACM} {International} {Conference} on {Multimedia}}, + publisher = {ACM}, + author = {Wang, Mingqian and Zhang, Yujun and Feng, Wei and Zhu, Lei and Wang, Song}, + month = oct, + year = {2022}, + keywords = {/unread}, + pages = {2324--2332}, + file = {Wang 等 - 2022 - Video Instance Lane Detection via Deep Temporal an.pdf:D\:\\bw_ch\\Zotero\\storage\\B4LAPIIZ\\Wang 等 - 2022 - Video Instance Lane Detection via Deep Temporal an.pdf:application/pdf}, +} + +@article{wang2018lanenet, + title = {{LaneNet}: {Real}-{Time} {Lane} {Detection} {Networks} for {Autonomous} {Driving}}, + volume = {abs/1807.01726}, + language = {en}, + journal = {ArXiv}, + author = {Wang, Ze and Ren, Weiqiang and Qiu, Qiang}, + year = {2018}, + keywords = {/unread}, +} + +@inproceedings{xiao2023adnet, + title = {{ADNet}: {Lane} {Shape} {Prediction} via {Anchor} {Decomposition}.}, + language = {en}, + booktitle = {{IEEE} {International} {Conference} on {Computer} {Vision} ({ICCV})}, + author = {Xiao, Lingyu and Li, Xiang and Yang, Sen and Yang, Wankou}, + year = {2023}, + keywords = {/unread}, + pages = {6381--6390}, +} + +@inproceedings{xu2020curvelanenas, + title = {{CurveLane}-{NAS}: {Unifying} {Lane}-{Sensitive} {Architecture} {Search} and {Adaptive} {Point} {Blending}.}, + language = {en}, + booktitle = {European {Conference} on {Computer} {Vision} ({ECCV})}, + author = {Xu, Hang and Wang, Shaoju and Cai, Xinyue and Zhang, Wei and Liang, Xiaodan and Li, Zhenguo}, + year = {2020}, + keywords = {/unread}, + pages = {689--704}, +} + +@inproceedings{zheng2021resa, + title = {{RESA}: {Recurrent} {Feature}-{Shift} {Aggregator} for {Lane} {Detection}.}, + language = {en}, + booktitle = {{AAAI} {Conference} on {Artificial} {Intelligence} ({AAAI})}, + author = {Zheng, Tu and Fang, Hao and Zhang, Yi and Tang, Wenjian and Yang, Zheng and Liu, Haifeng and Cai, Deng}, + year = {2021}, + keywords = {/unread}, + pages = {3547--3554}, +} + +@article{DuoBuWeiLianHeYinFaZhiNengQiCheChuangXinFaZhanZhanLue2020, + title = {多部委联合印发《智能汽车创新发展战略》}, + issn = {1004-1230}, + url = {https://kns.cnki.net/kcms2/article/abstract?v=axnrJTP8flxDSIHEp2Bjz0n0yD1AZ4lFNzEgxxHz6KGMGe9V8uKz3_lZsE-wgTm1ls-6-4BtK9B9hKWgDiEQVva8K_-zYoBW7qlR_ywg0zMEXctjDpkNuHX0dBdlNj9vzOrvUYkSztSeSNzdr25taw==&uniplatform=NZKPT&language=CHS}, + abstract = {{\textless}正{\textgreater}为深入贯彻落实党中央、国务院重要部署,顺应新一轮科技革命和产业变革趋势,抓住产业智能化发展战略机遇,加快推进智能汽车创新发展,国家发展改革委、中央网信办、科技部、工业和信息化部、公安部、财政部、自然资源部、住房城乡建设部、交通运输部、商务部、市场监管总局联合制定了《智能汽车创新发展战略》。现印发你们,请结合实际制定促进智能汽车创新发展的政策措施,着力推动各项战略任务有效落实。全文如下:智能汽车创新发展战略当今世界正经历百年未有之大}, + language = {zh}, + number = {1}, + urldate = {2024-05-22}, + journal = {广西节能}, + year = {2020}, + keywords = {《智能汽车创新发展战略》, 创新发展战略, 汽车强国, 智能汽车}, + pages = {8--10}, + file = {2020_多部委联合印发《智能汽车创新发展战略》.pdf:D\:\\bw_ch\\Zotero\\storage\\SWY9U7MH\\2020_多部委联合印发《智能汽车创新发展战略》.pdf:application/pdf}, +} + +@article{QiCheJiaShiZiDongHuaFenJiBiaoZhunFaBu2020, + title = {《汽车驾驶自动化分级》标准发布}, + issn = {1004-6437}, + url = {https://kns.cnki.net/kcms2/article/abstract?v=axnrJTP8flwZhRCxXqkOB5dEvwlMPGSBvq_5EllQswtjz7I2zMBWu9SAcXCFZ967dPasB8WKA43jVFakUvcnaa3LIueV4Ap0hnaDgpGLkBwU-rZJ3_eooGQjTqxpzSejbuxj4Pj5QtonWM5YSx8FtQ==&uniplatform=NZKPT&language=CHS}, + abstract = {{\textless}正{\textgreater}根据国家标准化管理委员会下达的国家标准制修订计划,工信部于3月9日发布《汽车驾驶自动化分级》(报批稿)(以下简称《分级》)推荐性国家标准,将于2021年1月1日正式实施。这意味着我国即将正式拥有自己的自动驾驶汽车分级标准,也将为我国后续自动驾驶相关法律、法规、强制性标准的出台提供支撑。《分级》对驾驶自动化、驾驶自动化系统、驾驶自动化功能、车辆横向运动控制、目标和事件探测与响应、动态驾驶任务接管、设计运行范围、接管请求等术语定义进}, + language = {zh}, + number = {2}, + urldate = {2024-05-22}, + journal = {机器人技术与应用}, + year = {2020}, + keywords = {/unread, 《汽车驾驶自动化分级》, 驾驶辅助, 汽车驾驶}, + pages = {3}, + file = {2020_《汽车驾驶自动化分级》标准发布.pdf:D\:\\bw_ch\\Zotero\\storage\\45A9SJ3R\\2020_《汽车驾驶自动化分级》标准发布.pdf:application/pdf}, +} + +@article{chen2023bsnet, + title = {{BSNet}: {Lane} {Detection} via {Draw} {B}-spline {Curves} {Nearby}}, + volume = {abs/2301.06910}, + language = {en}, + journal = {ArXiv}, + author = {Chen, Haoxin and Wang, Mengmeng and Liu, Yong}, + year = {2023}, + keywords = {/unread}, +} + +@misc{alabaComprehensiveSurveyDeep2022, + title = {A {Comprehensive} {Survey} of {Deep} {Learning} {Multisensor} {Fusion}-based {3D} {Object} {Detection} for {Autonomous} {Driving}: {Methods}, {Challenges}, {Open} {Issues}, and {Future} {Directions}}, + copyright = {https://creativecommons.org/licenses/by/4.0/}, + shorttitle = {A {Comprehensive} {Survey} of {Deep} {Learning} {Multisensor} {Fusion}-based {3D} {Object} {Detection} for {Autonomous} {Driving}}, + url = {https://www.techrxiv.org/doi/full/10.36227/techrxiv.20443107.v1}, + doi = {10.36227/techrxiv.20443107.v1}, + abstract = {Autonomous driving requires accurate, robust, and fast decision-making perception systems to understand the driving environment. Object detection is critical in allowing the perception system to understand the environment. The perception systems, especially 2D object detection and classification, have succeeded because of the emergence of deep learning (DL) in computer vision (CV) applications. However, 2D object detection lacks depth information, which is crucial to understanding the driving environment. Therefore, 3D object detection is fundamental for the perception system of autonomous driving and robotics applications to estimate the objects’ location and understand the driving environment. The CV community has been giving much attention recently to 3D object detection because of the growth of DL models and the need to know accurate locations of objects.}, + language = {en}, + urldate = {2024-05-22}, + author = {Alaba, Simegnew}, + month = aug, + year = {2022}, + file = {Alaba - 2022 - A Comprehensive Survey of Deep Learning Multisenso.pdf:D\:\\bw_ch\\Zotero\\storage\\BZS8GQDS\\Alaba - 2022 - A Comprehensive Survey of Deep Learning Multisenso.pdf:application/pdf}, +} + +@article{abualsaud2021laneaf, + title = {{LaneAF}: {Robust} {Multi}-{Lane} {Detection} {With} {Affinity} {Fields}.}, + volume = {6}, + language = {en}, + number = {4}, + journal = {IEEE Robotics and Automation Letters}, + author = {Abualsaud, Hala and Liu, Sean and Lu, David and Situ, Kenny and Rangesh, Akshay and Trivedi, Mohan M.}, + year = {2021}, + keywords = {/unread}, + pages = {7477--7484}, +} + +@article{chenMilestonesAutonomousDriving2023, + title = {Milestones in {Autonomous} {Driving} and {Intelligent} {Vehicles}—{Part} {II}: {Perception} and {Planning}}, + volume = {53}, + issn = {2168-2232}, + shorttitle = {Milestones in {Autonomous} {Driving} and {Intelligent} {Vehicles}—{Part} {II}}, + url = {https://ieeexplore.ieee.org/abstract/document/10156892}, + doi = {10.1109/TSMC.2023.3283021}, + abstract = {A growing interest in autonomous driving (AD) and intelligent vehicles (IVs) is fueled by their promise for enhanced safety, efficiency, and economic benefits. While previous surveys have captured progress in this field, a comprehensive and forward-looking summary is needed. Our work fills this gap through three distinct articles. The first part, a “survey of surveys” (SoS), outlines the history, surveys, ethics, and future directions of AD and IV technologies. The second part, “Milestones in AD and IVs Part I: Control, Computing System Design, Communication, high-definition map (HD map), Testing, and Human Behaviors” delves into the development of control, computing system, communication, HD map, testing, and human behaviors in IVs. This part, the third part, reviews perception and planning in the context of IVs. Aiming to provide a comprehensive overview of the latest advancements in AD and IVs, this work caters to both newcomers and seasoned researchers. By integrating the SoS and Part I, we offer unique insights and strive to serve as a bridge between past achievements and future possibilities in this dynamic field.}, + language = {en}, + number = {10}, + urldate = {2024-05-22}, + journal = {IEEE Transactions on Systems, Man, and Cybernetics: Systems}, + author = {Chen, Long and Teng, Siyu and Li, Bai and Na, Xiaoxiang and Li, Yuchen and Li, Zixuan and Wang, Jinjun and Cao, Dongpu and Zheng, Nanning and Wang, Fei-Yue}, + month = oct, + year = {2023}, + note = {Conference Name: IEEE Transactions on Systems, Man, and Cybernetics: Systems}, + keywords = {/unread, Location awareness, Visualization, Autonomous driving (AD), communication, control, high-definition map (HD map), human behaviors, intelligent vehicles (IVs), Laser radar, perception, planning, Planning, Simultaneous localization and mapping, survey of surveys (SoS), Surveys, system design, testing, Testing}, + pages = {6401--6415}, + file = {Chen et al_2023_Milestones in Autonomous Driving and Intelligent Vehicles—Part II.pdf:D\:\\bw_ch\\Zotero\\storage\\DTZCG9CY\\Chen et al_2023_Milestones in Autonomous Driving and Intelligent Vehicles—Part II.pdf:application/pdf;IEEE Xplore Abstract Record:D\:\\bw_ch\\Zotero\\storage\\P72HDBF8\\10156892.html:text/html}, +} diff --git a/packages/preview/modern-cug-thesis/0.2.6/template/thesis.typ b/packages/preview/modern-cug-thesis/0.2.6/template/thesis.typ new file mode 100644 index 000000000..993f82f81 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/template/thesis.typ @@ -0,0 +1,877 @@ +// 在线包管理器模式 +#import "@preview/modern-cug-thesis:0.2.6": documentclass, indent, no-indent, subpar-grid, word-count-cjk, total-words +// 本地模式 +// #import "../lib.typ": documentclass, indent, no-indent, subpar-grid, word-count-cjk, total-words + +// 本模板使用的字体是 Windows、MacOS 系统自带的,本地使用理论上不需要额外安装。 +// 如果是 Web App 上编辑,你需要上传 https://github.com/Rsweater/cug-thesis-typst/tree/main/fonts/Windows-SysFonts 里面所有字体,将 fonts 文件夹上传至模板创建的项目根目录即可,否则 CJK 字符可能无法正常显示。 + +#let ( + // 布局函数 + single-side, doc, mainmatter, appendix, + // 页面函数 + fonts-display-page, title-page, decl-page, resume-page, defence-page, + abstract, abstract-en, bilingual-bibliography, + outline-page, list-of-figures-tables, notation, acknowledgement, + // 其他 + info +) = documentclass( + anonymous: false, // 盲审模式 + // 论文页面顺序: + // (封面,统一打印)、题名页(中文,英文)、声明页(原创性声明、导师承诺书、使用授权书)、简历页(、答辩委员会名单) + // 中文摘要、Abstract、目录、图和表清单、正文、致谢、参考文献(、附录)。 + // 单面打印范围,自中文摘要后双面 + single-side: ("title-page", "decl-page", "resume-page", "defence-page"), + // 你会发现 Typst 有许多警告,这是因为 modern-nju-thesis 加入了很多不必要的 fallback 字体 + // 你可以自定义字体消除警告,先英文字体后中文字体,应传入「宋体」、「黑体」、「楷体」、「仿宋」、「等宽」 + // fonts: (楷体: (name: "Times New Roman", covers: "latin-in-cjk"), "FZKai-Z03S")), + info: ( + // 论文标题,将展示在题名页与页眉上 + // 多行标题请使用数组传入 `("thesis title", "with part next line")`, + // 或使用换行符:`"thesis title\nwith part next line"` + title: ("中国地质大学学位论文Typst模板", "参考研究生学位论文写作规范(2015-)"), + title-en: ("The Specification of Writting and Printing", "for CUG thesis"), + + // 论文作者信息:姓名、学号、年级、学校id、学校名称 + grade: "2025", + student-id: "120222xxxx", + school-code: "10491", + school-name: "中国地质大学", + school-name-en: "China University of Geosciences", + author: "张三", + author-en: "Ming Xing", + + // 学位信息 + doctype: "master", // "bachelor" | "master" | "doctor" | "postdoc", 文档类型,默认为本科生 bachelor + degreetype: "professional", // "academic" | "professional", 学位类型,默认为学术型 academic + is-equivalent: false, // 是否同等学力,默认为 false + is-fulltime: true, // 是否全日制,默认为 true + + // 专业以及学院信息 + degree: "工程硕士", // 学位名称,默认为工程硕士(专硕学位名称,学硕与专业名称类似) + degree-en: "Master of Engineering", + major: "测绘工程", // 专业名称,默认为测绘工程 + major-en: "Surveying and Mapping Engineering", + department: "国家地理信息系统\n工程技术研究中心", + department-en: "National Engineering Research Center of Geographic Information System", + address-en: "Wuhan 430074 P.R. China", + + // 指导老师信息,以`("name", "title")` 数组方式传入 + supervisor: ("李四", "教授"), + supervisor-en: ("Prof.", "Li Si"), + supervisor-ii: ("王五", "副教授"), + supervisor-ii-en: ("Prof.", "Wang Wu"), + + // 提交日期,默认为论文 PDF 生成日期 + // 日期格式:datetime(year: 2020,month: 10,day: 4) + submit-date: datetime.today(), + ), + // 参考文献源 + bibliography: bibliography.with("ref.bib"), +) + +// 文稿设置 +#show: doc +// 封面页 +#title-page() +// 声明页 +#decl-page() +// 作者简历 +#resume-page( + info: ( + // 1. 基本情况信息 + name:"张三", + gender: "男", + nation: "汉族", + birthday: "2000-01-29", + native-place: "河南省鹤壁市", + bachelor-time: "2018.09——2022.06", + bachelor-school: "河南农业大学", + bachelor-type: "理学学士", + master-time: "2022.09——2025.06", + master-school: "中国地质大学(武汉)", + master-type: "工程硕士", + // doctor-time: "", + // doctor-school: "", + // doctor-type: "", + // 2. 学术论文信息 + thesises: ( + "1. X. X研究[J]. X学报,2004(1):53-55.", + "2. X. X分析[J]. X技术,2005(5):6-7.", + ), + // 3. 获奖、专利情况信息 + awards: ( + "1. X. X. 江苏省科技进步奖三等奖.排名第2;", + "2. 2022年度优秀毕业生", + "3. 2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + "X. X. 江苏省科技进步奖三等奖.排名第2;", + "2022年度优秀毕业生", + "2025年度优秀研究生", + ), + // 4. 研究项目信息 + projects: ( + "1. X项目, 国家自然基金,项目编号:X,参加人员;", + ) + ) +) +// 答辩委员会名单页,如不需要,注释掉即可 +#defence-page( + info: ( + // 主席 + chair: (name: "张三", title: "教授", affiliation: "中国地质大学"), + // 委员 + // members: ( + + // ), + member-1: (name: "李四", title: "研究员", affiliation: "中国地质大学"), + member-2: (name: "王五", title: "副研究员", affiliation: "中国地质大学"), + member-3: (name: "一二三", title: "副教授", affiliation: "中国地质大学"), + member-4: (name: "四五六", title: "正高工", affiliation: "中交第二公路勘察设计有限公司"), + // 秘书 + secretary:(name: "七八九", title: "高级工程师", affiliation: "中国地质大学") + ) +) +// 字体展示测试页,仅供测试使用,正式文档请注释掉 +// #fonts-display-page() + +// 中文摘要 +#abstract( + keywords: ("中国地质大学(武汉)", "学位论文", "Typst模板") +)[ + 该项目是中国地质大学(武汉)学位论文Typst模板,主要依据#link("https://xgxy.cug.edu.cn/info/1073/3509.htm")[中国地质大学(武汉)研究生学位论文写作规范(2015-)]实现。该模板包含了 Typst 的简单介绍、特点,以及该模板使用方法以及注意事项等。如有疑问,欢迎各位前来#link("https://github.com/Rsweater/cug-thesis-typst/issues")[issue]交流 ~ +] + +// 英文摘要 +#abstract-en( + keywords: ("CUG", "Thesis Template", "Typst") +)[ + This project is the China University of Geosciences Dissertation Typst template, which is mainly realized based on #link("https://xgxy.cug.edu.cn/info/1073/3509.htm") [China University of Geosciences Postgraduate Dissertation Writing Standards (2015-)]. The template contains a brief introduction to Typst, its features, and how to use this template as well as precautions. If you have any questions, you are welcome to come to #link("https://github.com/Rsweater/cug-thesis-typst/issues")[issue] to exchange ~ +] + + +// 目录 +#outline-page() + +// 图表目录 +#list-of-figures-tables() + +// 正文 +#show: mainmatter +// 字数统计开始 +#show: word-count-cjk + +// 可以直接在该文件中编写,Typst 编译足够的快 ~ +// 如果使用分章节存放,记得打开注释之后先预览(VS Code 右上角的预览按钮,快捷键 Ctrl+K V)一下, +// 确保成功导入相关文件。 +// #include "chapters/intro.typ" +// #include "chapters/chapter1.typ" + += 导 论 + +欢迎使用该模板的用户~ + +该模板基于 Typst 设计,为方便 CUG 学子撰写毕业论文而生\~ 后面简单介绍下关于该模板的使用。使用该模板的好处: +#v(0.5em) // 正文格式20pt,段前段后0,这里先定义半个字符的间距,为了美观。 +// 有序列表缩进2个字符长度 +#enum(indent: 2em)[ + 不需要担心 Word 样式排版用的不熟练,模板样式按照 CUG 学位论文写作规范自动生成已经预先设定,仅需专注论文内容即可。 +][ + 拥有超快的渲染速度,不用担心后期一起渲染几十秒的问题(LaTex 老大哥不好意思哦\~)。 +][ + 预定义盲审、单双面混合打印模式,无需后续手动调整。 +][ + 支持 Typst Web APP 以及本地编辑模式,方便用户根据习惯自行挑选。 +] + + +== 注意事项 + +各位是勇敢的尝鲜者,但是再次提醒哦~ 该模板是民间自制,有不被官网认可的风险,请自行斟酌使用。 + +最简单的确认方法,就是咨询各自的学长学姐,学院是否接受 PDF 格式的毕业论文,如果接受,可放心使用,样式排版与Word一致。 + +== 论文撰写引导 + +Typst 编辑模式有两种。一种是标记模式,一种是脚本模式。 + +怎么理解这个呢?Markdown 这样的标记语言的使用方式就是标记模式,我们可以成为 Markdown Like 模式。当然,这里是我们自己简称,别人怎么称呼还真不知道。脚本模式就类似于 LaTex 那样,直接一行一行的命令跟着内容在一块。 + +标记模式的好处是,我们可以使用简单的标记直接来划分内容:段落、列表、图表、引用还是公式或者代码。脚本模式的好处是,如果这个模板提供的样式不满足你个人的喜好,可以在遵循《写作规范》的前提下,调整样式。就类似上面导论那里。由于我们的论文要求段落行间距 20pt,段前段后 0 ,为了美观使用了`#v(0.5em)`以及`#set enum(indent: 2em)`。我们的脚本模式使用`#`表示脚本开始,如果有多条命令,后面可跟{},例如`#{}`。 + +注意哦\~,我们这里的脚本模式是有作用域的。默认直接全局,在花括号内,仅作用于花括号。具体的可参考 README 中提供的文档说明以及本模板的代码。 + +后面小节简单的使用示例。 + +== 列表 + +=== 无序列表 + +- 无序列表项一 +- 无序列表项二 + - 无序子列表项一 + - 无序子列表项二 + +=== 有序列表 + ++ 有序列表项一 ++ 有序列表项二 + + 有序子列表项一 + + 有序子列表项二 + +=== 术语列表 + +/ 术语一: 术语解释 +/ 术语二: 术语解释 + +== 图表 + +引用@table:timing @table:timing-tlt,以及@figure:cug-logo。引用图表时,表格和图片建议加上 `table:`和`figure:` 前缀以便引用时方便区分。 + +#align(center, (stack(dir: ltr)[ + #figure( + table( + align: center + horizon, + columns: 4, + [t], [1], [2], [3], + [y], [0.3s], [0.4s], [0.8s], + ), + caption: [常规表], + ) +][ + #h(50pt) +][ + #figure( + table( + columns: 4, + stroke: none, + table.hline(), + [t], [1], [2], [3], + table.hline(stroke: .5pt), + [y], [0.3s], [0.4s], [0.8s], + table.hline(), + ), + caption: [三线表], + ) +])) + +#figure( + image("images/A-1.1.2校徽图案.jpg", width: 20%), + caption: [图片测试], +) + + +=== 图标测试小节 +#let fake-image = block(stroke: red, inset: 1em, lorem(10)) +#figure(fake-image, caption: [aaa]) + +#subpar-grid( + figure(fake-image, caption: [Inner caption]), , + figure(fake-image, caption: [Inner caption]), , + columns: (1fr, 1fr), + caption: [Outer caption], + label: , +) + +#figure(fake-image, caption: [aaa]) + +#subpar-grid( + figure(`adas`, caption: [Inner caption]), , + figure(fake-image, caption: [Inner caption]), , + columns: (1fr, 1fr), + caption: [Outer caption], + label: , +) + +=== Another Chapter + +#figure(fake-image, caption: [aaa]) + +#figure( + table( + columns: 4, + stroke: none, + table.hline(), + [t], [1], [2], [3], + table.hline(stroke: .5pt), + [y], [0.3s], [0.4s], [0.8s], + table.hline(), + ), + caption: [三线表], +) + +See @figure:full1, @figure:a and @figure:b. + +See also @figure:full2, @figure:c and @figure:d. + + +#figure( + fake-image, + placement: bottom, + caption: [底部浮动图片。A floating figure at the tbottombottomop.] +) +你可以使用 figure 的 `placement` 属性 #footnote[ + 需要 Typst 版本 >= 0.12.0:#link("https://github.com/typst/typst/releases/tag/v0.12.0")。 +] 来设置类似的浮动图表位置。可用的值有 `top`、`bottom` 与 `none`,分别对应 LaTeX 中的 t、b 与 h。若要实现类似 LaTeX 中 `p` 属性的整页图表,可结合 `pagebreak()` 函数与图片上下的 `h(1fr)` 来实现。 + +== 数学公式 + +可以像 Markdown 一样写行内公式 $x + y$,以及带编号的行间公式: + +$ phi.alt := (1 + sqrt(5)) / 2 $ + +引用数学公式建议加上 `equation:` 前缀,则由@equation:ratio,我们有: + +$ F_n = floor(1 / sqrt(5) phi.alt^n) $ + +我们也可以通过 `<->` 标签来标识该行间公式不需要编号 + +$ y = integral_1^2 x^2 dif x $ <-> + +而后续数学公式仍然能正常编号。 + +$ F_n = floor(1 / sqrt(5) phi.alt^n) $ + +== 参考文献 + +可以像这样引用参考文献:图书#[@蒋有绪1998]和会议#[@中国力学学会1990]。 + +== 代码块 + +代码块支持语法高亮。引用时需要加上 `code:` @code:code-example + +#figure( + ```py + def add(x, y): + return x + y + ```, + caption:[代码块], +) + +== 缩进 + +模板的所有段落默认都有首行缩进。如果需要取消缩进,可以使用 `#no-indent`。若需手动缩进,可以使用 `#indent`。 + +#no-indent 比如,这是一个没有首行缩进的段落。 + +== 字数统计 + +正文与附录的的总字数为:#total-words。 +你也可以使用以下命令来使用 `typst` 命令行统计字数 / 字符数: + +```bash +typst query thesis.typ '' 2>/dev/null --field value --one +typst query thesis.typ '' 2>/dev/null --field value --one +``` + += 研究生学位论文写作规范 + +== 内容要求 + +研究生学位论文应以汉语撰写(外国语言文学专业学位论文可以要求用其它文字撰写)。 + +来华留学生可以用英文撰写学位论文,但须有详细中文摘要(不少于6000字),英文摘要300-800英文实词。 + +学位论文一般由以下几部分组成,依次为: + +1.中文封面; + +2.中文题名页; + +3.英文题名页; + +4.学位论文原创性声明; + +5.研究生学位论文导师承诺书; + +6.学位论文使用授权书; + +7.作者简介; + +8.中文摘要; + +9.Abstract; + +10.目录; + +11.图和表清单(如有); + +12.正文; + +13.致谢; + +14.参考文献; + +15.附录。 + +#v(1em) +学位论文每部分从新的一页开始,各部分要求如下: + +=== 中文封面 +封面是学位论文的外表面,对论文起装潢和保护作用,并提供相关的信息。我校申请博士、硕士、硕士专业学位(全日制)和硕士专业学位(非全日制)的学位论文封面分别使用统一规定的不同封面。封面中除已固定的内容外,其他需要填写的内容要求如下: + +*分类号:*采用《中国图书馆分类法》(第4版)或《中国图书资料分类法》(第4版)标注。 + +*UDC:*按《国际十进分类法》进行标注(可登陆www.udcc.org,点击outline进行查询)。 + +*密级:*按GB/T 7156-2003《文献保密等级代码与标识》标注。公开论文可以标注“公开”,也可不标注。根据《中国地质大学博士、硕士学位论文定密工作办法》的规定,非公开论文须经申请、批准方能标注论文的密级,同时还应注明相应的保密年限,如“保密★2年”。 + +*论文题目:*应以简明词语恰当、准确地反映出论文最重要的特定内容,一般不宜超过25字,必要时可加论文副标题。 + +论文题目通常由名词性短语构成,应尽量避免使用不常用缩略词、首字母缩写字、字符、代号和公式等。 + +如论文题目内容层次很多,难以简化时,可采用论文题目和论文副标题相结合的方法,其中副标题起补充、阐明题目的作用。 + +*学科专业:*一级学科名称以国务院学位委员会、教育部2011年颁发的《学位授予和人才培养学科目录》为准,二级学科以国务院学位委员会和原国家教育委员会1997年颁布的《授予博士、硕士学位和培养研究生的学科、专业目录》填写,自设二级学科按各单位向教育部备案的自设二级学科名称及代码填写。 + +*专业学位类型(领域):*专业硕士学位名称按照专业硕士学位全称填写。 + +*学号:*填写研究生学号。 + +*姓名:*填写研究生姓名。 + +*指导教师和企业导师:*填写导师姓名,后附导师职称“教授”、“研究员”等,一般只写一名指导教师。经正式批准、备案的副导师或企业导师,写在副指导教师或企业导师一项中(限一名),后附职称“教授”、“研究员”等。 + +*培养单位:*指学位申请人所在学院(所、室、中心等)名称,应采用规范全称。如地球科学学院、资源学院等。 + +*论文完成时间* + +填写论文完成时间年月,如二O一五年十二月。 + +=== 题名页 +题名页包含论文全部书目信息,单独成页(见附件1、附件2)。主要内容规定如下: + +*学校代码:* + +按照教育部批准的学校代码标注,应为“10491”。 + +*研究生学号:* + +填写学生学号。 + +*学位授予单位名称和学位论文类型:* + +保持“中国地质大学”题字不变。根据学位论文类型填写“硕士学位论文”或“博士学位论文”或“硕士专业学位论文(全日制)或“硕士专业学位论文(非全日制)”。 + +*题名(即论文题目)和副题名(即论文副标题):* + +题名要求同论文题目,应中英文对照。英文题名在中文题名下方。 + +题名和副题名在整篇学位论文中的不同地方出现时,应保持一致。 + +*责任者;* + +责任者包括论文作者姓名,指导教师姓名、职称等。 + +如责任者姓名有必要附注汉语拼音时,遵照GB/T 16159-1996《汉语拼音正词法基本规则》著录。 + +*学科专业*:同1.1中说明。 + +*专业学位类型(领域):*同1. + +*培养单位:*同1.1中说明。 + +*论文完成时间:* + +填写论文完成时间年月,如二O一五年十二月。 + +=== 研究生学位论文原创性声明 +本部分放在题名页之后另起页(见附件3)。提交时须有作者亲笔签名。 +=== 导师承诺书 +本部分放在研究生学位论文原创性声明之后另起页(见附件4),提交时须有论文指导教师亲笔签名。 +=== 学位论文使用授权书 +本部分放在学位论文原创性声明之后另起页(见附件5),提交时须有作者亲笔签名。 +=== 作者简介 +个人简介包括出生年月日、获得学士、硕士学位的学校、时间等;学术论文研究成果按发表的时间顺序列出(已发表的列在前面,已接收待发表的放在后面);研究成果可以是在学期间参加的研究项目、申请的专利或获奖等(见附件6)。 +=== 中文摘要 +中文摘要是论文内容的简要陈述,是一篇具有独立性和完整性的短文,一般以第三人称语气写成,不加评论和补充的解释。摘要具有自含性,即不阅读论文的全文,就能获得必要的信息。摘要的内容应包括与论文等同的主要信息,供读者确定有无必要阅读全文,也可供二次文献采用。摘要一般应说明研究工作的目的、研究方法、研究成果和结论,要突出本论文的创造性成果。 + +中文摘要力求语言精炼准确,篇幅以一页为宜。如需要,字数可以略多。 + +用外文撰写学位论文时,中文摘要应不少于6000字。 + +摘要中不可出现图、表、化学方程式、非公知公用的符号和术语。 + +关键词在摘要内容后另起一行标明,一般3~5个,之间用分号分开。关键词是为了便于做文献索引和检索工作而从论文中选取出来用以表示全文主题内容信息的单词或术语,应体现论文特色,具有语义性,在论文中有明确出处。应尽量采用《汉语主题词表》或各专业主题词表提供的规范词。 +=== Abstract +Abstract内容与中文摘要相对应。一般不少于300个英文实词,篇幅以一页为宜。如需要,字数可以略多。 +=== 目录 +学位论文应有目录,另起页。目录是论文各章节标题的顺序列表,附有相应的起始页码(见附件7)。 +=== 图和表清单(如有) +论文中如图表较多,可以分别列出清单置于目录页之后。图的清单应有序号、图题目和页码。表的清单应有序号、表题目和页码(见附件8)。 +=== 正文 +正文是学位论文的主体部分,每一章应另起页。一般包括以下几个方面: + +*引言或绪言(第一章):*包括研究的目的和意义,问题的提出,选题的背景,文献综述,研究方法,论文结构安排等。 + +*具体章节:*本部分是论文作者的研究内容,是论文的核心。各章之间互相关联,符合逻辑顺序。 + +*引文标注:*论文中引用的文献的标注方法遵照GB/T 7714-2005《文后参考文献著录规则》,可采用顺序编码制,也可采用著者-出版年制,但全文必须统一。 + +*注释:*当论文中的字、词或短语,需要进一步加以说明,而又没有具体文献来源时,用注释。注释一般在社会科学中用的较多。 + +由于论文篇幅较长,建议采用文中编号加当页“脚注”的方式。最好不采用文中编号加“尾注”。涉及参考文献的注释同正文加注。 + +*结论(最后一章):*是学位论文最终和总体的结论,应明确、精练、完整、准确,不是正文中各段的小结的简单重复。论文的结论应包括论文的核心观点,着重阐述作者的创造性工作及所取得的研究成果在本学术领域的地位、作用和意义,交代研究工作的局限,提出未来工作的意见或建议。 + +学位论文字数:建议博士学位论文一般不少于5万字,硕士学位论文一般不少于3万字。在保证学位论文质量的前提下,各学科根据学科特点可自行规定论文字数。 +=== 致谢 +致谢是作者对该文章的形成作过贡献的组织或个人予以感谢的文字记载,语言要诚恳、恰当、简短。包括国家科学基金,资助研究工作的奖学金基金、合同单位、资助或支持的企业、组织或个人;协助完成研究工作和提供便利条件的组织或个人;在研究工作中提出建议和提供帮助的人;给予转载和引用权的资料、图片、文献、研究和调查的所有者;其他应感谢的组织和个人。 +=== 参考文献 +为了反映论文的科学依据和作者尊重他人研究成果的严肃态度以及向读者提供有关信息的出处,应列出参考文献表。参考文献表是文中引用的有具体文字来源的文献集合,其著录项目和著录格式遵照GB/T 7714-2005《文后参考文献著录规则》的规定执行。参考文献表中列出的一般应限于作者直接阅读过被引用的、发表在正式出版物上的文献。私人通信和未公开发表的资料,一般不宜列入参考文献,可紧跟在引用的内容之后注释或标注在当页的下方。 +=== 附录 +有些材料编入文章主体会有损于编排的条理性和逻辑性,或有碍于文章结构的紧凑和突出主题思想等,可将这些材料作为附录编排于全文的末尾。 + +== 书写要求 +=== 文字、标点符号和数字 +学位论文应用汉字书写。 + +汉字的使用应严格执行国家的有关规定,除特殊需要外,不得使用已废除的繁体字、异体字等不规范汉字。标点符号的用法应该以GB/T 15834—1995《标点符号用法》为准。数字用法应该以GB/T 15835—1995《出版物上数字用法的规定》为准。 +=== 密级标注 +标注同中文封面密级要求(具体标注见1.1)。 +文献保密期限的确定、变更或解密应按照有关的国家保密规定及学校保密规定执行。 +=== 章、节(层次标题) +论文正文可以根据需要划分为不同数量的章、节,章、节的划分,建议参照CY/T 35-2001《科技书刊的章节编号方法》。章、节标题要简短、明确,同一层次的标题应尽可能“排比”,即词(或词组)类型相同(或相近),意义相关,语气一致。 + +多层次标题用阿拉伯数字连续编号;不同层次的数字之间用小圆点“.”相隔,末位数字后面不加点号,如“3.1.2”; 一级节标题的序号居中起排,其他多层次标题的序号左顶格起排,与标题间隔1个字距。 + +例如: + +第一章 ××××(各章标题,居中) + +1.1 ××××(一级节标题,居中) + +1.1.1 ××××(二级节标题,左对齐) +=== 页眉和页码 +页眉从第一章开始到论文最后一页均需设置。正文页眉内容:印制的论文,奇数页居中对齐为“中国地质大学□” (□填写内容按照学生类别选择如下:博士学位论文、同等学力博士学位论文、硕士学位论文、硕士专业学位论文(全日制)、硕士专业学位论文(非全日制)、同等学力硕士学位论文);偶数页居中对齐为“作者姓名:论文题目”。 + +页码在外侧,页码从第一章(引言)开始按阿拉伯数字(1,2,3,……)连续编排。打印字号为5号宋体,页眉之下有一下划线。页眉格式见附件9。 +=== 有关图、表、表达式 +论文中图、表、表达式应注明出处(如有),自制的图、表应说明资料、数据来源。 +==== 图 +图包括曲线图、构造图、示意图、框图、流程图、记录图、地图、照片等。 + +图要精选,应具有自明性,切忌与表及文字表述重复。 + +图要清楚,但坐标比例不要过分放大,同一图上不同曲线的点要分别用不同形状的标识符标出。图中的术语、符号、单位等应与正文表述中所用一致。图在文中的布局要合理,一般随文编排,先见文字后见图。 + +图序号与图题目:图序号即图的编号,由“图”和从“1”开始的阿拉伯数字组成,图较多时,可分章编号。如第三章第2个图的图序号为“图3.2”;图题目即图的名称,应简明,置于图序号之后,图序号和图题目之间空1个字距,居中置于图的下方。例如: + +例如:@test1 非线性构形状态转移过程示意图 + +#figure( + image("images/示意图1.png", width: 80%), + caption: [非线性构形状态转移过程示意图], +) +==== 表 +表应有自明性。表中参数应标明量和单位的符号。表一般随文排,先见相应文字,后见表。 + +表序号与表题目:表序号即表的编号,由“表”和从“1”开始的阿拉伯数字组成,表较多时,可分章编号,如第三章第1个表的表序号为“表3.1”;表题目即表的名称,应简明,置于表序号之后,表序号和表题目之间空1个字距,居中置于表的上方。例如: + +#align(center)[ + #figure( + table( + align: center + horizon, + columns: 7, + rows: 6, + table.cell(rowspan: 2)[$x_1(m)$], + table.cell(colspan: 3)[$F_x$], table.cell(colspan: 3)[$x_2$], + [均值(N)], [标准差(N)], [变异系数], [均值(m)], [标准差(m)], [变异系数], + [0.000000], [0.000000], [0.000000], [0.000000], [0.000000], [0.000000], [0.000000], + [0.000100], [206.006806], [150.245905], [0.729325], [0.000024], [0.000013], [0.541667], + [], [], [], [], [], [], [], + [], [], [], [], [], [], [], + ), + caption: [常规表], + ) +] + +表的编排,一般是内容和测试项目由左至右横读,数据依序竖读。 +表的编排建议采用国际通用的三线表。 +如某表需要转页接排时,在随后的各页上应重复表序号。表序号后跟表题目(可省略)和“(续)”,居中置于表上方,续表均应重复表头。 +==== 表达式 +表达式主要指数字表达式,也包括文字表达式。表达式需另行起排,并缩格书写,与周围文字留足够的空间区分开。如有两个以上的表达式,应用从“1”开始的阿拉伯数字进行编号,并将编号置于圆括号内。表达式的编号右端对齐,表达式与编号之间可用“…”连接。表达式较多时,可分章编号。如第三章第2个表达式: + +当广义控制截面具有式(3.2)的广义本构关系时,可定义如下的截面示性数 +// $ +// Phi paren.l #sym.Theta paren.r = brace.l +// $ +// +较长的表达式需要转行时,应尽可能在“=”处回行,或者在“+”、“-”、“×”、“/”等符号处回行,公式中分数线的横线,其长度应等于或略大于分子和分母中较长的一方。如正文中书写分数,应尽量将其高度降低为一行。如将分数线书写为“/”,将根号改为负指数。 +=== 参考文献 +参考文献表的标注方法可采用顺序编码制,也可采用著者-出版年制。建议参照《文后参考文献著录规则》(GB/T 7714-2005)的要求书写参考文献,见附件10所示。 + +顺序编码制:参考文献表可按正文中引用的文献出现的先后顺序连续编码,并将序号置于正文中引用参考文献的部位方括号中(上标)。 + +引用单篇、一处引用多篇、多次引用同一篇(方括号外标引文页码)文献示例: + +……的控制[235];……的思想[236]。裴伟[248,83]……,…的研究[256-257]。……产生的结果”[320]198。……和目标[320]345。 + +著者-出版年制:参考文献表引用的文献按文种集中,可分为中文、日文、西文、俄文、其他文种5部分。中文参考文献在前,外文参考文献在后,按著者字顺和出版年排序。中文参考文献(含中译文献)可以按汉语拼音字顺排列,也可按笔画笔顺排列。外文参考文献表可以按著(作)者姓氏字母顺序排序。 + +示例: + +……in the scences(Crane 1972), ……by Stieg(1981) + +参考文献: + +CRANE D。1972. Invisible college[M]. Chicago: Univ. of Chicago Press. + +Stieg M F. 1981. The …… histirians[J].College and Research Libraries, 42(6):549-560. + +引用单篇、多著者、同一著者同年不同文献和多次引用同一文献(括号外上标引文页码)示例: + +……的共识(张忠智,1997),……(刘毅 等,1990),……的方针”(裴丽生,1981a)。……更好的问题(裴丽生 等,1981b)。……的结果”(李伟,1996)1194,……和目标”(李伟,1996)354。 + +参考文献的作者不超过3位时,全部列出;超过3位时,只列前3位,后面加“,等”或相应的外文;作者姓名之间用“,”分开。 + +// 正式文档不使用仿宋字体,随这里用宋体替代 +*几种主要参考文献著录格式如下:* + +*专(译)著:* [序号] 作者.书名[文献类型标志].(译者,译).出版地:出版者,出版年:起-止页码. + +*连续出版物:* [序号] 作者.文题[文献类型标志].刊名,年,卷号(期号):起-止页码. + +*学 位 论 文*:[序号] 姓名.文题[文献类型标志].授予单位所在地:授予单位,授予年. + +*专 利:*[序号] 申请者.专利名:国名,专利号[文献类型标志].公告日期. + +*技 术 标 准:*[序号] 发布单位.技术标准代号.技术标准名称.出版地:出版者,出版日期. + +*电子文献:*作者.题名[文献类型标志/文献载体标志].出版地:出版者,出版年[引用日期].获取和访问路径. + +=== 量和单位 + +论文中使用的有关量和单位要执行GB 3100~3102—1993(国家技术监督局1993-12-27发布,1994-07-01实施,eqv. ISO 1000:1992)有关量和单位的规定。量的符号一般为单个拉丁字母或希腊字母,并一律采用斜体(pH例外)。 + +为区别不同情况,可在量符号上附加角标。 + +在表达量值时,在公式、图、表和文字叙述中,一律使用单位的国际符号,且用正体。单位符号与数值间要留适当间隙。 + +== 排版及印刷要求 +=== 纸张要求及页面设置 +#align(center)[ + #set par(first-line-indent: 0em) + #figure( + table( + align: (center + horizon, left), + columns: 2, + rows: 5, + table.header( + [ ], [*排版要求*], + ), + + [纸 张], [A4(210×297),幅面白色], + [页面设置], [上、下3cm,左、右3cm,页眉2.5cm、页脚2.0cm,装订线0cm], + [页 眉], [宋体10.5磅(或五号)居中 + + Abstract部分用Times New Roman字体10.5磅(或五号)], + [页 码], [宋体10.5磅(或五号)] + ), + caption: [纸张规格和页面设置要求], + ) <纸张> +] + +=== 中文封面排版要求 +中文封面已有固定版式,见附件11所示,只须提供有关内容。 +#align(center)[ + #set par(first-line-indent: 0em) + #figure( + table( + align: (center + horizon, left + horizon), + columns: 2, + rows: 9, + [ ], [*排版要求*], + [博士/硕士学位论文、硕士专业学位论文(全日制)/非全日制], [宋体26磅(或一号)加粗], + [论文题目], [黑体22磅(或二号)加粗居中(可分两行),单倍行距], + [学 号], [Times New Roman体16磅(或三号)加粗], + [论文作者], [宋体16磅(或三号) 加粗], + [学科专业/企业导师], [宋体16磅(或三号) 加粗], + [指导教师], [宋体16磅(或三号) 加粗], + [培养单位], [宋体16磅(或三号) 加粗], + [日 期], [宋体16磅(或三号)汉字居中,不用阿拉伯数字] + ), + caption: [中文封面排版要求], + ) +] + +=== 书脊排版要求 +论文封面的书脊用仿宋,上方写题目,中间写作者姓名,下方写“中国地质大学(武汉)”。 +=== 中文题名页排版要求(见附件1) +#align(center)[ + #set par(first-line-indent: 0em) + #figure( + table( + align: (center + horizon, left + horizon), + columns: 2, + rows: 9, + [ ], [*排版要求*], + [学校代码], [宋体16磅(或三号)], + [研究生学号], [宋体16磅(或三号)居中], + [中国地质大学博士/硕士学位论文、硕 + 士专业学位论文(全日制)/非全日制], [宋体26磅(或一号)加粗 ], + [论文题目], [黑体22磅(或二号)加粗居中(可分两行),单倍行距], + [学 号], [Times New Roman体16磅(或三号) ], + [论文作者], [宋体16磅(或三号) ], + [指导教师/企业导师], [宋体16磅(或三号) ], + [学科专业], [宋体16磅(或三号) ], + [培养单位], [宋体16磅(或三号) ], + [日 期], [宋体16磅(或三号)汉字居中,不用阿拉伯数字], + ), + caption: [中文题名页排版要求], + ) +] +=== 英文题名页排版要求(见附件2) +#align(center)[ + #set par(first-line-indent: 0em) + #figure( + table( + align: (center + horizon, left + horizon), + columns: 2, + rows: 5, + [ ], [*排版要求*], + [A Dissertation Submitted……], [Times New Roman字体16磅(或三号)], + [Title], [Times New Roman字体22磅(或二号) 加粗居中,单倍行距], + [Ph.D. Candidate:], [Times New Roman字体16磅(或三号)居中,单倍行距], + [Major:], [Times New Roman字体16磅(或三号)居中,单倍行距], + [Supervisor:], [Times New Roman字体16磅(或三号)居中], + [China Universiti of Geoscience + + Wuhan 430074P.R. China], [Times New Roman字体16磅(或三号)居中], + ), + caption: [英文题名页排版要求], + ) +] +=== 中、英文摘要排版要求 +#align(center)[ + #set par(first-line-indent: 0em) + #figure( + table( + align: (center + horizon, left + horizon), + columns: 3, + rows: 4, + [ ], [*中文摘要排版要求*],[*英文摘要排版要求*], + [标题], [摘要:黑体18磅(或小二)加粗居中,单倍行距], [Abstract: Times New Roman字体18磅(或小二)加粗居中,单倍行距], + [段落文字], [宋体12磅(或小四) 固定值行距20磅,段前段后0磅], [Times New Roman字体12磅(或小四) 固定值行距20磅,段前段后0磅], + [关键词], [“关键词”三字加粗 宋体12磅(或小四)], [“Key Words”两词加粗 Times New Roman 字体12磅(或小四)] + + ), + caption: [中、英文摘要排版要求], + ) +] + +=== 目录排版要求(见附件7) +#align(center)[ + #set par(first-line-indent: 0em) + #figure( + table( + align: (center + horizon, left + horizon), + columns: 3, + rows: 5, + [ ], [*示例*],[*排版要求*], + [标题], [目录], [黑体16磅(或三号)加粗居中,单倍行距], + [各章目录], [第一章 格式要求×××], [宋体14磅(或四号), 固定值行距20磅,两端对齐,页码右对齐], + [一级节标题 + + 目录], [1.5 ×××], [宋体12磅(或小四),固定值行距20磅,两端对齐,页码右对齐,左缩进1个汉字符], + [二级节标题 + + 目录], [1.5.1 ×××], [宋体12磅(或小四),固定值行距20磅,两端对齐,页码右对齐,左缩进2个汉字符] + + ), + caption: [目录排版要求], + ) +] + +=== 正文排版要求 +#align(center)[ + #set par(first-line-indent: 0em) + #figure( + table( + align: (center + horizon, left + horizon), + columns: 3, + rows: 8, + [ ], align(center)[*示例*],[*排版要求*], + [各章标题], [第一章 ×××], [黑体16磅(或三号)加粗居中,单倍行距,上下空2行,章序号与章题目间空一个汉字符], + [一级节标题], [1.1 ×××], [黑体14磅(或四号)加粗居中,单倍行距,上下空1行,序号与题名之间空一个汉字符], + [二级节标题], [1.1.1 ×××], [黑体12磅(或小四)居左,单倍行距,上下空1行,序号与题名之间空一个汉字符。 ], + [正文段落文字], [××××××××××× + + ××××××××××××], [宋体12磅(或小四),英文用Times New Roman字体12磅(或小四),两端对齐书写,段落首行左缩进2个汉字符。固定值行距20磅(段落中有数学表达式时,可根据表达需要设置该段的行距),段前0磅,段后0磅。], + [图序号、图名], [图2.1 ×××], [置于图的下方,宋体10.5磅(或五号)居中,单倍行距,图序号与图题目文字之间空一个汉字符宽度。], + [表序号、表名], [表3.1 ×××], [置于表的上方,宋体10.5磅(或五号)居中,单倍行距,表序号与表题目文字之间空一个汉字符宽度。], + [表达式], [……(3.2)], [序号加圆括号,Times New Roman10.5磅(或五号),右对齐。], + + ), + caption: [正文排版要求], + ) +] + +=== 其他部分排版要求 +#align(center)[ + #set par(first-line-indent: 0em) + #figure( + table( + align: (center + horizon, left + horizon), + columns: 2, + rows: 5, + [ ], align(center)[*排版要求*], + [作者简介], [标题要求同各章标题,正文部分宋体12磅(或小四),行距20磅,段前段后0磅。], + [致谢], [标题要求同各章标题,正文部分宋体12磅(或小四),行距20磅,段前段后0磅。], + [参考文献], [标题要求同各章标题,正文部分:宋体12磅(或小四,英文用Times New Roman字体12磅),行距20磅,段前段后0磅。], + [附录], [标题要求同各章标题,正文部分:宋体12磅(英文用Times New Roman字体12磅),两端对齐书写,段落首行左缩进2个汉字符。行距20磅(段落中有数学表达式时,可根据表达需要设置该段的行距),段前0磅,段后0磅。], + + ), + caption: [其他部分排版要求] + ) +] + +=== 论文印刷及装订要求 +论文自中文摘要起双面印刷,之前部分单面印刷。如果论文因页码过少而不能印刷书脊时,可以单面印刷。 + +根据论文存档要求,论文必须用线装或热胶装订,不能使用金属钉装订。 + + +// 中英双语参考文献 +// 默认使用 gb-7714-2015-numeric 样式 +#bilingual-bibliography(full: false, style: "gb-t-7714-2005-numeric-cug.csl") + +// 致谢 +#acknowledgement[ + 感谢 Typst 非官方中文交流群的热心大佬的帮助 (797942860),感谢 #link("https://github.com/nju-lug/modern-nju-thesis")[modern-nju-thesis]、#link("https://github.com/sysu/better-thesis")[better-thesis]、#link("https://github.com/hitszosa/universal-hit-thesis")[HIT-Thesis-Typst] 模板提供的代码思路,感谢 #link("https://gist.github.com/csimide")[csimide] 和 #link("https://github.com/OrangeX4")[OrangeX4] 提供的中英双语参考文献实现. +] + +// 附录 +// #show: appendix + +// = 附录 + +// == 附录子标题 + +// === 附录子子标题 + +// 附录内容,这里也可以加入图片,例如@fig:appendix-img。 + +// #figure( +// image("images/nju-emblem.svg", width: 20%), +// caption: [图片测试], +// ) + + +// // 正文结束标志,不可缺少 +// // 这里放在附录后面,使得页码能正确计数 +// #mainmatter-end() \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/thumbnail.png b/packages/preview/modern-cug-thesis/0.2.6/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..9bf7cf10b2e5350f8745c0fa446d31a1dd7f7163 GIT binary patch literal 58946 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 if (s.len() >= 9) { + // 中文字符宽度3个像素,英文字符宽度1个像素 + "▢▢▢▢▢" + // "█████" + } else if (s.len() >= 6 and s.len() < 10) { + "▢▢▢" + // "███" + } else {s.clusters().map( + (s) => if not s.contains("\n") {"▢"} else {s}).join() + } + ).join() + } else { info } + } \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/bilingual-bibliography.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/bilingual-bibliography.typ new file mode 100644 index 000000000..d28df1495 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/bilingual-bibliography.typ @@ -0,0 +1,145 @@ +// Authors: Rsweater, csimide, OrangeX4 +// Adapted from https://github.com/nju-lug/modern-nju-thesis/blob/main/utils/bilingual-bibliography.typ +// Tested only on GB-7714-2005-Numeric-CUG +#let bilingual-bibliography( + bibliography: none, + title: "参考文献", + full: false, + style: "gb-t-7714-2005-numeric-cug.csl", + mapping: (:), + extra-comma-before-et-al-trans: false, + // 用于控制多位译者时表现为 `et al. tran`(false) 还是 `et al., tran`(true) + allow-comma-in-name: false, + // 如果使用的 CSL 中,英文姓名中会出现逗号,请设置为 true +) = { + assert(bibliography != none, message: "请传入带有 source 的 bibliography 函数。") + + // Please fill in the remaining mapping table here + mapping = ( + //"等": "et al", + "卷": "Vol.", + "册": "Bk.", + // "译": ", tran", + // "等译": "et al. tran", + // 注: 请见下方译者数量判断部分。 + ) + mapping + + let to-string(content) = { + if content.has("text") { + content.text + } else if content.has("children") { + content.children.map(to-string).join("") + } else if content.has("child") { + to-string(content.child) + } else if content.has("body") { + to-string(content.body) + } else if content == [ ] { + " " + } + } + + show grid.cell.where(x: 1): it => { + // 后续的操作是对 string 进行的。 + let ittext = to-string(it) + // 判断是否为中文文献:去除特定词组后,仍有至少两个连续汉字。 + let pureittext = ittext.replace(regex("[等卷册和版本章期页篇译间者(不详)]"), "") + if pureittext.find(regex("\p{sc=Hani}{2,}")) != none { + ittext + } else { + // 若不是中文文献,进行替换 + // 第xxx卷、第xxx册的情况:变为 Vol. XXX 或 Bk. XXX。 + let reptext = ittext + reptext = reptext.replace( + regex("(第\s?)?\d+\s?[卷册]"), + itt => { + if itt.text.contains("卷") { + "Vol. " + } else { + "Bk. " + } + itt.text.find(regex("\d+")) + }, + ) + + // 第xxx版/第xxx本的情况:变为 1st ed 格式。 + reptext = reptext.replace( + regex("(第\s?)?\d+\s?[版本]"), + itt => { + let num = itt.text.find(regex("\d+")) + num + if num.clusters().len() == 2 and num.clusters().first() == "1" { + "th" + } else { + ( + "1": "st", + "2": "nd", + "3": "rd", + ).at(num.clusters().last(), default: "th") + } + " ed" + }, + ) + + // 译者数量判断:单数时需要用 trans,复数时需要用 tran 。 + /* + 注: + 1. 目前判断译者数量的方法非常草率:有逗号就是多个作者。但是在部分 GB/T 7714-2005 方言中,姓名中可以含有逗号。如果使用的 CSL 是姓名中含有逗号的版本,请将 bilingual-bibliography 的 allow-comma-in-name 参数设为 true。 + 2. 在 GB/T 7714-2005 原文中有 `等译`(P15 10.1.3 小节 示例 1-[1] 等),但未给出相应的英文缩写翻译。CSL 社区库内的 GB/T 7714-2005 会使用 `等, 译` 和 `et al., tran` 的写法。为使中英文与标准原文写法一致,本小工具会译作 `et al. tran`。若需要添加逗号,请将 bilingual-bibliography 的 extra-comma-before-et-al-trans 参数设为 true。 + 3. GB/T 7714-2005 P8 7.2 小节规定:“译”前需加逗号。因此单个作者的情形,“译” 会被替换为 ", trans"。与“等”并用时的情况请见上一条注。 + 如果工作不正常,可以考虑换为简单关键词替换,即注释这段情况,取消 13 行 mapping 内 `译` 条目的注释。 + */ + reptext = reptext.replace(regex("\].+?译"), itt => { + // 我想让上面这一行匹配变成非贪婪的,但加问号后没啥效果? + let comma-in-itt = itt.text.replace(regex(",?\s?译"), "").matches(",") + if ( + type(comma-in-itt) == array and + comma-in-itt.len() >= ( + if allow-comma-in-name {2} else {1} + ) + ) { + if extra-comma-before-et-al-trans { + itt.text.replace(regex(",?\s?译"), ", tran") + } else { + itt.text.replace(regex(",?\s?译"), " tran") + } + } else { + itt.text.replace(regex(",?\s?译"), ", trans") + } + }) + + // `等` 特殊处理:`等`后方接内容也需要译作 `et al.`,如 `等译` 需要翻译为 `et al. trans` + reptext = reptext.replace( + regex("等."), + itt => { + "et al." + // 如果原文就是 `等.`,则仅需简单替换,不需要额外处理 + // 如果原文 `等` 后没有跟随英文标点,则需要补充一个空格 + if not itt.text.last() in (".", ",", ";", ":", "[", "]", "/", "\\", "<", ">", "?", "(", ")", " ", "\"", "'") { + " " + } + // 原文有英文句号时不需要重复句号,否则需要将匹配到的最后一个字符吐回来 + if not itt.text.last() == "." { + itt.text.last() + } + }, + ) + + // 其他情况:直接替换 + reptext = reptext.replace( + regex("\p{sc=Hani}+"), + itt => { + mapping.at(itt.text, default: itt.text) + // 注意:若替换功能工作良好,应该不会出现 `default` 情形 + }, + ) + reptext + } + } + + set text(lang: "zh") + bibliography( + title: title, + full: full, + style: style, + ) +} diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/custom-cuti.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/custom-cuti.typ new file mode 100644 index 000000000..2addc088a --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/custom-cuti.typ @@ -0,0 +1 @@ +#import "@preview/cuti:0.2.1": * \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/custom-heading.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/custom-heading.typ new file mode 100644 index 000000000..02eb87f30 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/custom-heading.typ @@ -0,0 +1,50 @@ +// 展示一个标题 +#let heading-display(it) = { + if it != none { + if it.has("numbering") and it.numbering != none { + numbering(it.numbering, ..counter(heading).at(it.location())) + [ ] + } + it.body + } else { + "" + } +} + +// 获取当前激活的 heading,参数 prev 用于标志优先使用之前页面的 heading +#let active-heading(level: 1, prev: true, loc) = { + // 之前页面的标题 + let prev-headings = query(selector(heading.where(level: level)).before(loc), loc) + // 当前页面的标题 + let cur-headings = query(selector(heading.where(level: level)).after(loc), loc) + .filter(it => it.location().page() == loc.page()) + if prev-headings.len() == 0 and cur-headings.len() == 0 { + return none + } else { + if prev { + if prev-headings.len() != 0 { + return prev-headings.last() + } else { + return cur-headings.first() + } + } else { + if cur-headings.len() != 0 { + return cur-headings.first() + } else { + return prev-headings.last() + } + } + } +} + +// 获取当前页面的标题 +#let current-heading(level: 1, loc) = { + // 当前页面的标题 + let cur-headings = query(selector(heading.where(level: level)).after(loc), loc) + .filter(it => it.location().page() == loc.page()) + if cur-headings.len() != 0 { + return cur-headings.first() + } else { + return none + } +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/custom-numbering.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/custom-numbering.typ new file mode 100644 index 000000000..a5c88476a --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/custom-numbering.typ @@ -0,0 +1,30 @@ +// 一个简单的自定义 Numbering +// 用法也简单,可以特殊设置一级等标题的样式,以及一个缺省值 +#let custom-numbering(base: 1, depth: 5, first-level: auto, second-level: auto, third-level: auto, format, ..args) = { + if (args.pos().len() > depth) { + return + } + if (first-level != auto and args.pos().len() == 1) { + if (first-level != "") { + numbering(first-level, ..args) + } + return + } + if (second-level != auto and args.pos().len() == 2) { + if (second-level != "") { + numbering(second-level, ..args) + } + return + } + if (third-level != auto and args.pos().len() == 3) { + if (third-level != "") { + numbering(third-level, ..args) + } + return + } + // default + if (args.pos().len() >= base) { + numbering(format, ..(args.pos().slice(base - 1))) + return + } +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/custom-tablex.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/custom-tablex.typ new file mode 100644 index 000000000..29fe03bb0 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/custom-tablex.typ @@ -0,0 +1 @@ +#import "@preview/tablex:0.0.8": * \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/datetime-display.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/datetime-display.typ new file mode 100644 index 000000000..38207582f --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/datetime-display.typ @@ -0,0 +1,36 @@ +// 显示中文日期 +#let datetime-display(date) = { + date.display("[year] 年 [month] 月 [day] 日") +} + +#let map_number = ( + "0": "〇", "1": "一", "2": "二", "3": "三", "4": "四", + "5": "五", "6": "六", "7": "七", "8": "八", "9": "九" +) +#let map_month = ( + "1": "一", "2": "二", "3": "三", "4": "四", + "5": "五", "6": "六", "7": "七", "8": "八", + "9": "九", "10": "十", "11": "十一", "12": "十二" +) + +#let datetime-zh-display(date, anonymous: false) = { + let year = (str(date.year()).clusters().map( + (n) => if map_number.keys().contains(n) {map_number.at(n)} + ).join("")) + let month = (str(date.month())) + let month = {if map_month.keys().contains(month) { + month.replace(month, map_month.at(month)) + }} + if anonymous { + year = "二〇▢▢" + month = "▢▢" + } + [ + #(year)年#(month)月 //\ #year;年#month;月 \ #{year;[年];month;[月]} + ] +} + +// 显示英文日期 +#let datetime-en-display(date) = { + date.display("[month repr:short] [day], [year]") +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/double-underline.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/double-underline.typ new file mode 100644 index 000000000..892300c8b --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/double-underline.typ @@ -0,0 +1,11 @@ +// 双下划线 +#let double-underline(body) = context { + let size = measure(body) + stack( + body, + v(3pt), + line(length: size.width), + v(2pt), + line(length: size.width), + ) +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/fix-cjk-linebreak.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/fix-cjk-linebreak.typ new file mode 100644 index 000000000..32efcba69 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/fix-cjk-linebreak.typ @@ -0,0 +1,40 @@ +/* + * fix-cjk-linebreak.typ + * + * @project: modern-ecnu-thesis + * @author: Juntong Chen (dev@jtchen.io) + * @created: 2025-01-12 15:12:15 + * @modified: 2025-01-14 20:27:32 + * + * Copyright (c) 2025 Juntong Chen. All rights reserved. + */ + +// 截止 Typst 0.12.0 版本,CJK 字符的换行处理还不够完善,可能会插入不必要的空格。这里提供一个 workaround。 +// 详见:https://github.com/typst/typst/issues/792#issuecomment-2310139085 +#let fix-cjk-linebreak(body, debug: false) = [ + // 不去除章后的字符 + #let cjk-char = "[\p{Han},。;:!?‘’“”()「」『』【】…—&&[^章节]]" + // 没有使用 \s 来匹配空白字符的原因是为了保留全角空格。 + #let cjk-re = regex("(" + cjk-char + ")([ \\t\\r]+(" + cjk-char + ")+)+") + #show cjk-re: it => { + if debug { + highlight(fill: color.red, it.text) + } else { + it.text.replace(regex("[ \\t\\r]+"), "") + } + } + #show: rest => { + let ends-with-cjk = it => { + it != none and it.has("text") and it.text.ends-with(regex(cjk-char)) + } + let last-item = none + for item in rest.children { + if item == [ ] and ends-with-cjk(last-item) { + item = [] + } + last-item = item + item + } + } + #body +] \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/gb-t-7714-2005-numeric-cug.csl b/packages/preview/modern-cug-thesis/0.2.6/utils/gb-t-7714-2005-numeric-cug.csl new file mode 100644 index 000000000..d0d60fb82 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/gb-t-7714-2005-numeric-cug.csl @@ -0,0 +1,477 @@ + + diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/hline.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/hline.typ new file mode 100644 index 000000000..afd563c66 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/hline.typ @@ -0,0 +1,4 @@ +// 一条水平横线 +#let hline() = { + line(length: 100%) +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/indent.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/indent.typ new file mode 100644 index 000000000..4ab874265 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/indent.typ @@ -0,0 +1,10 @@ +// 中文缩进 +#let indent = h(2em) + +// 假段落,附着于 heading 之后可以实现首行缩进 +// #let empty-par = par[#box()] +#let fake-par = context { + let b = par(box()) + b + v(-measure(b + b).height) +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/invisible-heading.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/invisible-heading.typ new file mode 100644 index 000000000..f16fa8081 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/invisible-heading.typ @@ -0,0 +1,5 @@ +// 用于创建一个不可见的标题,用于给 outline 加上短标题 +#let invisible-heading(..args) = { + set text(size: 0pt, fill: white) + heading(numbering: none, ..args) +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/justify-text.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/justify-text.typ new file mode 100644 index 000000000..318027d13 --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/justify-text.typ @@ -0,0 +1,9 @@ +// 双端对其一段小文本,常用于表格的中文 key +#let justify-text(with-tail: false, tail: ":", body) = { + if with-tail and tail != "" { + stack(dir: ltr, stack(dir: ltr, spacing: 1fr, ..body.split("").filter(it => it != "")), tail) + } else { + stack(dir: ltr, spacing: 1fr, ..body.split("").filter(it => it != "")) + } +} + diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/number-per-chapter.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/number-per-chapter.typ new file mode 100644 index 000000000..665a9935a --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/number-per-chapter.typ @@ -0,0 +1,21 @@ +#import "@preview/subpar:0.2.1" + +#let sub-figure-numbering = (super, sub) => numbering("1.1a", counter(heading).get().first(), super, sub) +#let figure-numbering = super => numbering("1.1", counter(heading).get().first(), super) +#let equation-numbering = super => numbering("(1.1)", counter(heading).get().first(), super) + +#set heading(numbering: "1.1") +// #show heading.where(level: 1): it => { +// counter(math.equation).update(0) +// counter(figure.where(kind: image)).update(0) +// counter(figure.where(kind: table)).update(0) +// counter(figure.where(kind: raw)).update(0) +// it +// } +// #show figure: set figure(numbering: figure-numbering) +// #show math.equation: set math.equation(numbering: equation-numbering) + +#let subpar-grid = subpar.grid.with( + numbering: figure-numbering, + numbering-sub-ref: sub-figure-numbering, +) \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/str.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/str.typ new file mode 100644 index 000000000..a6588c69e --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/str.typ @@ -0,0 +1,37 @@ +/* + * str.typ + * + * @project: modern-ecnu-thesis + * @author: Juntong Chen (dev@jtchen.io) + * @created: 2025-01-08 20:29:03 + * @modified: 2025-01-08 21:28:46 + * + * Copyright (c) 2025 Juntong Chen. All rights reserved. + */ + +#let is-western(unicode) = { + // https://gist.github.com/shhider/38b43db6abe31b551384372254c5ac79 + return unicode >= 0x0041 and unicode <= 0x005A or unicode >= 0x0061 and unicode <= 0x007A or unicode >= 0x30 and unicode <= 0x39 +} + +// 将分行的字符串拼接成一个正常字符串。将会考虑为西文字符插入空格。 +#let to-normal-str(src: "") = { + if type(src) == str { + src = src.split("\n") + } + let lines = src.enumerate().map(it => { + let id = it.at(0) + let line = it.at(1) + if id > 0 { + // 如果上一行的最后一个字符和当前行的第一个字符都是西文,则在当前行首插入空格 + if line.len() > 0 and is-western(line.codepoints().first().to-unicode()) { + let last = src.at(id - 1) + if last.len() > 0 and is-western(last.codepoints().last().to-unicode()) { + line = " " + line + } + } + } + return line + }) + return lines.join("") +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/style.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/style.typ new file mode 100644 index 000000000..21a45823e --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/style.typ @@ -0,0 +1,39 @@ +#import "@preview/cuti:0.2.1": show-cn-fakebold + +#let 字号 = ( + 初号: 42pt, + 小初: 36pt, + 一号: 26pt, + 小一: 24pt, + 二号: 22pt, + 小二: 18pt, + 三号: 16pt, + 小三: 15pt, + 四号: 14pt, + 中四: 13pt, + 小四: 12pt, + 五号: 10.5pt, + 小五: 9pt, + 六号: 7.5pt, + 小六: 6.5pt, + 七号: 5.5pt, + 八号: 5pt, +) + +#let 字体 = ( + // 宋体,属于「有衬线字体」,一般可以等同于英文中的 Serif Font + // 这一行分别是「新罗马体(有衬线英文字体)」、「宋体(Windows)」、「宋体(MacOS)」 + 宋体: ((name: "Times New Roman", covers: "latin-in-cjk"), "SimSun", "Songti SC"), + // 黑体,属于「无衬线字体」,一般可以等同于英文中的 Sans Serif Font + // 这一行分别是「新罗马体(有衬线英文字体)」、「黑体(Windows)」、「黑体(MacOS)」 + 黑体: ((name: "Arial", covers: "latin-in-cjk"), "SimHei", "Heiti SC"), + // 楷体 + // 这一行分别是「新罗马体(有衬线英文字体)」、「锴体(Windows)」、「楷体(MacOS)」 + // 楷体: ("Times New Roman", "KaiTi", "Kaiti SC"), + // // 仿宋 + // // 这一行分别是「新罗马体(有衬线英文字体)」、「仿宋(Windows 11)」、「华文仿宋(MacOS)」 + // 仿宋: ("Times New Roman", "FangSong", "FangSong SC"), + // 等宽字体,用于代码块环境,一般可以等同于英文中的 Monospaced Font + // 这一行分别是「Courier New(等宽英文字体)」、「黑体(Windows)」、「黑体(MacOS)」、「Menlo(MacOS 等宽英文字体)」 + 等宽: ((name: "Courier New", covers: "latin-in-cjk"), (name: "Menlo", covers: "latin-in-cjk"), (name: "IBM Plex Mono", covers: "latin-in-cjk"), "SimHei", "Heiti SC"), +) diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/unpairs.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/unpairs.typ new file mode 100644 index 000000000..6931e95bd --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/unpairs.typ @@ -0,0 +1,8 @@ +// 将 pairs 数组转成 dict 字典 +#let unpairs(pairs) = { + let dict = (:) + for pair in pairs { + dict.insert(..pair) + } + dict +} \ No newline at end of file diff --git a/packages/preview/modern-cug-thesis/0.2.6/utils/word-counter.typ b/packages/preview/modern-cug-thesis/0.2.6/utils/word-counter.typ new file mode 100644 index 000000000..1e4fe639d --- /dev/null +++ b/packages/preview/modern-cug-thesis/0.2.6/utils/word-counter.typ @@ -0,0 +1,27 @@ +/* + * word-counter.typ + * + * @project: modern-ecnu-thesis + * @author: Juntong Chen (dev@jtchen.io) + * @created: 2025-01-11 13:37:30 + * @modified: 2025-01-12 16:21:32 + * + * Copyright (c) 2025 Juntong Chen. All rights reserved. + */ + +#import "@preview/wordometer:0.1.4": * + +#let word-count-cjk(content, ..options) = { + let stats = word-count-of(content, exclude: (heading), counter: s => ( + characters: s.replace(regex("\s+"), "").clusters().len(), + words: s.matches(regex("\b[\w'’.,\-]+\b")).len(), + words-cjk: s.matches(regex("[\p{Han}]|[\p{Latin}'’.,\-]+")).len(), + ), ..options) + state("total-words-cjk").update((prev) => prev + stats.words-cjk) + state("total-words").update((prev) => prev + stats.words) + state("total-characters").update((prev) => prev + stats.characters) + content +} + +#let total-words = context state("total-words-cjk").final() +#let total-characters = context state("total-characters").final() \ No newline at end of file