From 63446a2b35ad0f9b901c69d79e4f07268420cfc9 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 21 Jun 2022 20:20:17 +0000 Subject: xduts (21jun22) git-svn-id: svn://tug.org/texlive/trunk@63681 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/xelatex/xduts/README.md | 17 +- Master/texmf-dist/doc/xelatex/xduts/xduts.pdf | Bin 441342 -> 665369 bytes Master/texmf-dist/source/xelatex/xduts/xduts.dtx | 2701 ++++++++++++++++++-- Master/texmf-dist/tex/xelatex/xduts/xdufont.sty | 14 +- .../texmf-dist/tex/xelatex/xduts/xdupgthesis.cls | 1228 ++++++++- .../texmf-dist/tex/xelatex/xduts/xduugthesis.cls | 133 +- 6 files changed, 3792 insertions(+), 301 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/xelatex/xduts/README.md b/Master/texmf-dist/doc/xelatex/xduts/README.md index b8b0b431bdd..f0120632c3d 100644 --- a/Master/texmf-dist/doc/xelatex/xduts/README.md +++ b/Master/texmf-dist/doc/xelatex/xduts/README.md @@ -6,14 +6,14 @@ XDUTS (Xidian University TeX Suite) is a LaTeX3 document class and package suite XDUTS currently includes: -- `xduugthesis.cls`, Xidian University Undergraduate Thesis document class - `xdufont.sty`, Xidian University Font package +- `xdupgthesis.cls`, Xidian University Postgraduate Thesis document class +- `xduugthesis.cls`, Xidian University Undergraduate Thesis document class In the future, we plan to add the following document classes, including - `xduugtp.cls`, Xidian University Undergraduate Thesis Proposal document class - `xdupgtp.cls`, Xidian University Postgraduate Thesis Proposal document class -- `xdupgthesis.cls`, Xidian University Postgraduate Thesis document class ## Installation @@ -52,15 +52,16 @@ texdoc xduts ### GitHub -Generally speaking, CTAN updates XDUTS slowly. If you want to use the latest version of XDUTS, download this repository and run the following commands to get the corresponding documentation and document class/package files. +Generally speaking, CTAN updates XDUTS slowly. If you want to use the latest version of XDUTS, download this repository and run the following command to get the document class/package files. ```shell xetex xduts.ins -xelatex xduts.dtx -makeindex -s gind.ist -o xduts.ind xduts.idx -makeindex -s gglo.ist -o xduts.gls xduts.glo -xelatex xduts.dtx -xelatex xduts.dtx +``` + +Run command below to get the documentation. + +```shell +l3build ctan ``` ## Note diff --git a/Master/texmf-dist/doc/xelatex/xduts/xduts.pdf b/Master/texmf-dist/doc/xelatex/xduts/xduts.pdf index 4160cedd526..c37cd0b7dc0 100644 Binary files a/Master/texmf-dist/doc/xelatex/xduts/xduts.pdf and b/Master/texmf-dist/doc/xelatex/xduts/xduts.pdf differ diff --git a/Master/texmf-dist/source/xelatex/xduts/xduts.dtx b/Master/texmf-dist/source/xelatex/xduts/xduts.dtx index 967e6c1c4aa..cb82f932352 100644 --- a/Master/texmf-dist/source/xelatex/xduts/xduts.dtx +++ b/Master/texmf-dist/source/xelatex/xduts/xduts.dtx @@ -1,14 +1,14 @@ % \iffalse %<*driver> \ProvidesFile{xduts.dtx} -[2022/05/15 v1.15.0.1 Xidian University TeX Suite] +[2022/06/21 v2.0.0.0 Xidian University TeX Suite] % %\NeedsTeXFormat{LaTeX2e} %\RequirePackage{expl3} %\ProvidesExplPackage{xdufont} %\ProvidesExplClass{xdupgthesis} %\ProvidesExplClass{xduugthesis} -% {2022/05/15}{1.15.0.1} +% {2022/06/21}{2.0.0.0} % {Xidian University Font package} % {Xidian University Postgraduate Thesis document class} % {Xidian University Undergraduate Thesis document class} @@ -55,10 +55,10 @@ \newcommand{\secrefx}[1]{第\xspace\ref{#1}\xspace 节} \newcommand{\tabrefx}[1]{\tablename\xspace\ref{#1}\xspace} % 文档类选项 -\newcommand{\optx}[1]{\xspace\opt{#1}\xspace} -% /name LaTeX3控制序列 +\newcommand{\optx}[1]{\xspace{\ttfamily\seqsplit{#1}}\xspace} +% \name LaTeX3控制序列 \newcommand{\csx}[1]{\xspace\cs{#1}\xspace} -% /name 传统LaTeX2e命令 +% \name 传统LaTeX2e命令 \newcommand{\tnx}[1]{\xspace\tn{#1}\xspace} % LaTeX3键值 \newcommand{\metax}[1]{\xspace\meta{#1}\xspace} @@ -79,9 +79,9 @@ % 文档类 \newcommand{\clsx}[1]{\xspace\cls{#1}\xspace} % 值 -\newcommand{\valuex}[1]{\xspace\texttt{#1}\xspace} +\newcommand{\valuex}[1]{\xspace{\ttfamily\seqsplit{#1}}\xspace} % 命令 -\newcommand{\cmdx}[1]{\xspace\texttt{#1}\xspace} +\newcommand{\cmdx}[1]{\xspace{\ttfamily\seqsplit{#1}}\xspace} % 链接 \newcommand{\footurl}[1]{\footnote{\url{#1}}} \newcommand{\ctanurl}[1]{\href{https://mirrors.ustc.edu.cn/CTAN/#1}{\ttfamily CTAN://#1}} @@ -155,7 +155,7 @@ \end{document} % % \fi -% \CheckSum{1315} +% \CheckSum{2773} % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -197,7 +197,10 @@ % \end{enumerate} % \end{abstract} % \clearpage -% \tableofcontents +% \section*{\contentsname\markright{目录}} +% \makeatletter +% \@starttoc{toc} +% \makeatother % \clearpage % \section{介绍} % \xduts{} (Xidian University \TeX{} Suite) @@ -205,11 +208,8 @@ % 而编写的\LaTeXiii{}文档类和宏包套装,目前有: % \begin{itemize} % \item \pkgx{xdufont},中/英/数学字体配置宏包。 -% \item \clsx{xduugthesis},本科毕业设计论文。 -% \end{itemize} -% 正在开发: -% \begin{itemize} % \item \clsx{xdupgthesis},研究生学位论文。 +% \item \clsx{xduugthesis},本科毕业设计论文。 % \end{itemize} % 即将支持: % \begin{itemize} @@ -242,7 +242,9 @@ % 请在最新版\LaTeX{}环境中使用最新版\xduts{}, % 认真阅读相应文档类/宏包使用说明章节即可使用\xduts{}。 % \subsection{xdufont} -% \pkgx{xdufont}宏包基于\pkgx{xeCJK},相较于\pkgx{ctex}宏包的主要优势为默认支持宋体粗体、斜体,内置多种字体配置,可任意搭配中/英/数学字体,更加符合校内各种文档的撰写要求。 +% \pkgx{xdufont}宏包基于\pkgx{xeCJK}和\pkgx{unicode-math}, +% 在中文字体配置方面相较于\pkgx{ctex}宏包的主要优势为默认支持宋体粗体、斜体, +% 内置多种字体配置,可任意搭配中/英/数学字体,更加符合校内各种文档的撰写要求。 % \par % \secrefx{编译}介绍了如何编译,\secrefx{参数设置}介绍了如何自定义配置,具体的配置选项见\secrefx{字体选项}。\pkgx{xdufont}可以搭配任意文档类进行使用,例如: % \begin{latexexample}[moretexcs={\xdusetup},emph={[1]document}] @@ -257,7 +259,47 @@ % \par % 学会以上用法后即可使用\pkgx{xdufont}宏包。 % \changes{v1.4.0.0}{2022/04/26}{新增研究生学位论文} +% \changes{v1.30.0.2}{2022/06/20}{研究生学位论文文档} % \subsection{xdupgthesis} +% \pkgx{xdupgthesis}基于\clsx{ctexbook}文档类, +% 提供多种字体配置,部分样式可自定义,信息录入便捷。 +% 请在阅读《西安电子科技大学研究生学位论文模板(2015年修订版)-2019.03修订》后再使用\pkgx{xdupgthesis}。 +% 专业学位硕士请额外阅读《西安电子科技大学专业学位硕士学位论文封面及中英文题名页模板(2015年版)-2019.03修订》, +% 撰写英文学位论文请额外阅读《西安电子科技大学英文学位论文撰写相关规定》。 +% \par +% 典型的\clsx{xdupgthesis}主文件结构如下所示: +% \begin{latexexample}[moretexcs={\xdusetup,\frontmatter,\mainmatter,\chapter,\backmatter},emph={[1]document}] +% \documentclass{xdupgthesis} +% \xdusetup{} +% \begin{document} +% \frontmatter +% \mainmatter +% \chapter{欢迎} +% 使用\LaTeX{}! +% \backmatter +% \end{document} +% \end{latexexample} +% \par +% \secrefx{编译}介绍了如何编译, +% \secrefx{参考文献引用}介绍了如何引用参考文献, +% \secrefx{参数设置}介绍了如何自定义配置。 +% 其中,字体选项见\secrefx{字体选项}, +% 部分英文字体切换见\secrefx{英文字体}, +% 语言配置见\secrefx{语言配置}, +% 参考文献配置见\secrefx{参考文献配置}, +% 页面配置见\secrefx{页面配置}, +% 交叉引用配置见\secrefx{交叉引用配置}, +% Caption配置见\secrefx{Caption配置}, +% 表格配置见\secrefx{表格配置}, +% 算法配置见\secrefx{算法配置}, +% 章节配置见\secrefx{章节配置}, +% 对照表配置见\secrefx{对照表配置}, +% 作者简介配置见\secrefx{作者简介配置}。 +% 如需附录,请使用附录环境,具体见\secrefx{附录环境}。 +% 支持的信息录入选项见\secrefx{信息录入}。 +% \par +% 学会以上用法后即可使用\clsx{xdupgthesis}文档类。 +% 另外,在\secrefx{额外命令}中提供了部分额外命令来增强排版。 % \subsection{xduugthesis} % \pkgx{xduugthesis}基于\clsx{ctexbook}文档类, % 提供多种字体配置,部分样式可自定义,信息录入便捷。 @@ -278,6 +320,7 @@ % \end{document} % \end{latexexample} % \par +% \changes{v1.30.0.1}{2022/06/20}{移除info录入示例} % \secrefx{编译}介绍了如何编译, % \secrefx{参考文献引用}介绍了如何引用参考文献, % \secrefx{参数设置}介绍了如何自定义配置。 @@ -291,28 +334,7 @@ % 算法配置见\secrefx{算法配置}, % 章节配置见\secrefx{章节配置}。 % 如需附录,请使用附录环境,具体见\secrefx{附录环境}。 -% 仅支持如下信息录入,具体每个选项的含义见\secrefx{信息录入},如没有部分选项,则删除该行即可。 -% \begin{latexexample}[moretexcs={\xdusetup},emph={[2]info}] -% \xdusetup { -% info = { -% title = {第一行标题\\第二行标题}, -% department = {电子工程学院}, -% major = {电子信息工程}, -% author = {张三}, -% supervisor = {李四}, -% supervisor-department = {王五}, -% supervisor-enterprise = {赵六}, -% supervisor-school = {刘七}, -% class-id = {123456}, -% student-id = {12345678910}, -% abstract = {abstract-zh.tex}, -% abstract* = {abstract-en.tex}, -% keywords = {我,就是,充数的,关键词}, -% keywords* = {Dummy,Keywords,Here,it is}, -% acknowledgements = {acknowledgements.tex} -% } -% } -% \end{latexexample} +% 支持的信息录入选项见\secrefx{信息录入}。 % \par % 学会以上用法后即可使用\clsx{xduugthesis}文档类。 % 另外,在\secrefx{额外命令}中提供了部分额外命令来增强排版。 @@ -354,6 +376,7 @@ % \subsection{参数设置} % \label{参数设置} % \changes{v0.5.1.1}{2022/04/06}{增加xdusetup配置文档} +% \changes{v1.30.0.1}{2022/06/20}{修改xdusetup配置文档} % \begin{function}[added=2022-03-07]{\xdusetup} % \begin{syntax} % \tnx{xdusetup}=\argx{键值列表} @@ -369,27 +392,31 @@ % 但需注意,参数列表中不可以出现空行。 % 一些选项包含子选项,如\optx{style}和\optx{info}等, % 它们可以按如下两种等价方式来设定: -% \begin{latexexample}[morekeywords={\xdusetup},emph={[1]style,cjk-font,latin-font,info,title,author,department}] +% \end{function} +% \begin{latexexample}[morekeywords={\xdusetup},emph={[1]style,cjk-font,latin-font,info,title,author,department,abstract,keywords*}] % \xdusetup{ -% style = { cjk-font = adobe, latin-font = tacn }, +% style = { cjk-font = fandol, latin-font = gyre }, % info = { -% title = {论如何让用户认真阅读文档}, +% title = {论如何让用户\\认真阅读文档}, % author = {张三}, -% department = {排版学院} +% department = {排版学院}, +% abstract = {chapters/abstract-zh.tex}, +% keywords* = {Dummy,Keywords,Here,it is} % } % } % \end{latexexample} % 或者 -% \begin{latexexample}[morekeywords={\xdusetup},emph={[1]style,cjk-font,latin-font,info,title,author,department}] +% \begin{latexexample}[morekeywords={\xdusetup},emph={[1]style,cjk-font,latin-font,info,title,author,department,abstract,keywords*}] % \xdusetup{ -% style / cjk-font = adobe, -% style / latin-font = tacn, -% info / title = {论如何让用户认真阅读文档}, +% style / cjk-font = fandol, +% style / latin-font = gyre, +% info / title = {论如何让用户\\认真阅读文档}, % info / author = {张三}, -% info / department = {排版学院} +% info / department = {排版学院}, +% info / abstract = {chapters/abstract-zh.tex}, +% info / keywords* = {Dummy,Keywords,Here,it is} % } % \end{latexexample} -% \end{function} % \subsection{字体选项} % \label{字体选项} % \begin{function}[added=2022-03-06]{style/cjk-font} @@ -562,7 +589,7 @@ % \end{function} % \begin{optdesc} % \item[zh] 中文。 -% \item[en] 英文。 +% \item[en] 英文。注意,研究生学位论文一二三级标题命令请参考\secrefx{英文研究生学位论文双语标题}。 % \end{optdesc} % \subsection{参考文献配置} % \label{参考文献配置} @@ -576,11 +603,21 @@ % \item[bibtex] 使用\bibtex{}处理文献,样式由\pkgx{natbib}宏包负责。 % \item[biblatex] 使用\biber{}处理文献,样式由\pkgx{biblatex}宏包负责。 % \end{optdesc} -% \begin{function}[added=2022-04-02]{style/bib-resource} +% \changes{v1.31.0.0}{2022/06/21}{修改\pkgx{biblatex}默认选项} +% \begin{function}[added=2022-06-21]{style/biblatex-option} % \begin{syntax} -% \optx{style/bib-resource}=\argx{参考文献文件路径} +% \optx{style/biblatex-option}=\argx{biblatex宏包选项} % \end{syntax} -% 设置参考文献\filex{.bib}文件,多个文件之间需要使用英文半角逗号隔开。 +% 修改\pkgx{biblatex}默认选项,具体配置参考\filex{biblatex-gb7714-2015.pdf}, +% 仅在\optx{style/bib-backend}等于|biblatex|时有效。例如: +% \begin{latexexample}[morekeywords={\xdusetup},emph={[1]style,biblatex-option}] +% \xdusetup{ +% style / biblatex-option = { gbnamefmt=quanpin } +% } +% \end{latexexample} +% \end{function} +% \begin{function}[added=2022-04-02]{style/bib-resource} +% 已弃用,请使用\secrefx{信息录入}中的\optx{info/bib-resource}。 % \end{function} % \subsection{页面配置} % \label{页面配置} @@ -709,22 +746,147 @@ % \item[7] 七号 % \item[8] 八号 % \end{optdesc} +% \subsection{对照表配置} +% \label{对照表配置} +% \begin{function}[added=2022-06-05]{style/customize-los,style/customize-loa} +% \begin{syntax} +% \optx{style/customize-los}=\metax{(true)|false} +% \optx{style/customize-loa}=\metax{(true)|false} +% \end{syntax} +% 是否完全自定义符号对照表和缩略语对照表。 +% \end{function} +% \begin{optdesc} +% \item[true] 完全自定义符号对照表和缩略语对照表,对照表由用户自行排版。 +% 在\secrefx{信息录入}中提及的\optx{info/los}和\optx{info/loa}中对应的文件中可以通过表格或列表等方式实现对照表,例如: +% \begin{latexexample}[emph={[1]tabular}] +% \begin{tabular}{ll} +% 符号 & 符号名称 \\ +% $\pi$ & 圆周率 \\ +% $\mathbb{R}$ & 实数 \\ +% \end{tabular} +% \end{latexexample} +% \item[false] 使用内置的基于\envx{longtblr}环境(\pkgx{tabularray}宏包)实现的 +% 符号对照表和缩略语对照表样式。 +% 在\secrefx{信息录入}中提及的\optx{info/los}和\optx{info/loa}中对应的文件仅需填写相应列数的内容即可,例如: +% \begin{latexexample} +% $\pi$ & 圆周率 \\ +% $\mathbb{R}$ & 实数 \\ +% \end{latexexample} +% \end{optdesc} +% \begin{function}[added=2022-06-05]{style/colspec-los,style/colspec-loa} +% \begin{syntax} +% \optx{style/colspec-los}=\argx{符号对照表列格式} +% \optx{style/colspec-loa}=\argx{缩略语对照表列格式} +% \end{syntax} +% 设置符号对照表和缩略语对照表列格式, +% 符号对照表列格式默认值为\valuex{Q[l,m]X[l,m]}。 +% 缩略语对照表列格式默认值为\valuex{Q[l,m]X[l,m]X[l,m]}。 +% 语法参考\pkgx{tabularray}宏包\cmdx{colspec}选项。 +% 仅在\optx{style/customize-los}和\optx{style/customize-loa}等于\valuex{false}时有效。 +% \end{function} +% \begin{function}[added=2022-06-05]{style/title-row-los,style/title-row-loa} +% \begin{syntax} +% \optx{style/title-row-los}=\metax{true|(false)} +% \optx{style/title-row-loa}=\metax{true|(false)} +% \end{syntax} +% 是否每页均显示符号对照表和缩略语对照表标题行。 +% 仅在\optx{style/customize-los}和\optx{style/customize-loa}等于\valuex{false}时有效。 +% \end{function} +% \begin{optdesc} +% \item[true] 每页均显示符号对照表和缩略语对照表标题行。 +% \item[false] 仅第一页显示显示符号对照表和缩略语对照表标题行。 +% \end{optdesc} +% \changes{v1.26.0.0}{2022/06/07}{作者简介配置} +% \subsection{作者简介配置} +% \label{作者简介配置} +% \changes{v1.28.4.1}{2022/06/19}{修正作者简介示例} +% \begin{function}[added=2022-06-07]{style/customize-edubg,style/customize-resresult} +% \begin{syntax} +% \optx{style/customize-edubg}=\metax{(true)|false} +% \optx{style/customize-resresult}=\metax{(true)|false} +% \end{syntax} +% 是否完全自定义作者简介中教育背景和攻读硕士学位期间的研究成果。 +% \end{function} +% \begin{optdesc} +% \item[true] 完全自定义作者简介中教育背景和攻读硕士学位期间的研究成果,由用户自行排版。 +% 在\secrefx{信息录入}中提及的\optx{info/bio}中对应的文件中 +% 可以通过段落、表格或列表等方式排版教育背景和攻读硕士学位期间的研究成果,例如: +% \begin{latexexample}[moretexcs={\subsection}] +% \section{基本情况} +% 张三,男,陕西西安人,1982年8月出生,西安电子科技大学XX学院XX专业2008级硕士研究生。 +% \section{教育背景} +% 2001.08~2005.07 西安电子科技大学,本科,专业:电子信息工程 +% \par +% 2008.08~ 西安电子科技大学,硕士研究生,专业:电磁场与微波技术 +% \section{攻读硕士学位期间的研究成果} +% \subsection{发表学术论文} +% [1] XXX, XXX, XXX. Rapid development technique for drip irrigation emitters[J]. RP Journal,UK.,2003,9(2): 104-110.(SCI: 672CZ, EI: 03187452127) +% \par +% [2] XXX, XXX, XXX. 基于快速成型制造的滴管快速制造技术研究[J]. 西安交通大学学报, 2001, 15(9): 935-939. (EI: 02226959521) +% \subsection{申请(授权)专利} +% [1] XXX, XXX, XXX等. 专利名称: 国别,专利号[P]. 出版日期. +% \subsection{参与科研项目及获奖} +% [1] XXX项目, 项目名称, 起止时间, 完成情况, 作者贡献。 +% \par +% [2] XXX, XXX, XXX等. 科研项目名称. 陕西省科技进步三等奖, 获奖日期. +% \end{latexexample} +% \item[false] 使用内置的基于\envx{tblr}环境(\pkgx{tabularray}宏包)实现的 +% 教育背景表格环境\envx{edubg}和基于\envx{enumerate}环境(\pkgx{enumitem}宏包)实现的 +% 攻读硕士学位期间的研究成果列表环境\envx{resresult}。 +% 在\secrefx{信息录入}中提及的\optx{info/bio}中对应的文件中使用\envx{edubg}和\envx{resresult}环境即可,例如: +% \begin{latexexample}[moretexcs={\subsection},emph={[1]edubg,resresult}] +% \section{基本情况} +% 张三,男,陕西西安人,1982年8月出生,西安电子科技大学XX学院XX专业2008级硕士研究生。 +% \section{教育背景} +% \begin{edubg} +% 2001.08~2005.07 & 西安电子科技大学,本科,专业:电子信息工程\\ +% 2008.08~ & 西安电子科技大学,硕士研究生,专业:电磁场与微波技术\\ +% \end{edubg} +% \section{攻读硕士学位期间的研究成果} +% \subsection{发表学术论文} +% \begin{resresult} +% \item XXX, XXX, XXX. Rapid development technique for drip irrigation emitters[J]. RP Journal,UK.,2003,9(2): 104-110.(SCI: 672CZ, EI: 03187452127) +% \item XXX, XXX, XXX. 基于快速成型制造的滴管快速制造技术研究[J]. 西安交通大学学报, 2001, 15(9): 935-939. (EI: 02226959521) +% \end{resresult} +% \subsection{申请(授权)专利} +% \begin{resresult} +% \item XXX, XXX, XXX等. 专利名称: 国别,专利号[P]. 出版日期. +% \end{resresult} +% \subsection{参与科研项目及获奖} +% \begin{resresult} +% \item XXX项目, 项目名称, 起止时间, 完成情况, 作者贡献。 +% \item XXX, XXX, XXX等. 科研项目名称. 陕西省科技进步三等奖, 获奖日期. +% \end{resresult} +% \end{latexexample} +% \end{optdesc} % \subsection{附录环境} % \label{附录环境} -% \begin{function}[added=2022-04-04]{appendixes} -% 附录位于参考文献后,即在\tnx{backmatter}后。 -% \begin{latexexample}[emph={[1]appendixes}] +% \changes{v1.29.0.0}{2022/06/19}{研究生学位论文附录环境} +% \begin{function}[added=2022-04-04,updated=2022-06-19]{appendixes} +% 本科生毕业设计附录位于参考文献后,即在\tnx{backmatter}后。 +% \begin{latexexample}[moretexcs={\backmatter,\chapter},emph={[1]appendixes}] +% \chapter{这是正文章节} +% \backmatter +% \begin{appendixes} +% \chapter{这是一个附录} +% \chapter{这是另一个附录} +% \end{appendixes} +% \end{latexexample} +% 研究生学位论文附录位于参考文献前,即在\tnx{backmatter}前。 +% \begin{latexexample}[moretexcs={\backmatter,\chapter},emph={[1]appendixes}] +% \chapter{这是正文章节} % \begin{appendixes} % \chapter{这是一个附录} % \chapter{这是另一个附录} % \end{appendixes} +% \backmatter % \end{latexexample} % \end{function} % \subsection{信息录入} % \label{信息录入} % \changes{v1.9.0.0}{2022/05/03}{增加信息录入选项分类表} % \changes{v1.10.3.1}{2022/05/04}{移除专业博士校外导师信息录入} -% 用户根据\tabrefx{tblr:info}选择相应的选项进行信息录入。 +% 用户根据\tabrefx{tblr:info}选择相应的选项并使用\secrefx{参数设置}中的方式进行信息录入。 % \begin{tblr} % [ % long, @@ -776,12 +938,17 @@ % student-id & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ % clc & & & \cmark & \cmark & \cmark & \cmark \\ % secret-level & & & \cmark & \cmark & \cmark & \cmark \\ +% secret-year & & & \cmark & \cmark & \cmark & \cmark \\ % submit-date & & & \cmark & \cmark & \cmark & \cmark \\ % abstract & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ % abstract* & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ % keywords & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ % keywords* & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ +% los & & & \cmark & \cmark & \cmark & \cmark \\ +% loa & & & \cmark & \cmark & \cmark & \cmark \\ +% bib-resource & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ % acknowledgements & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ +% bio & & & \cmark & \cmark & \cmark & \cmark \\ % \end{tblr} % \changes{v1.9.0.0}{2022/05/03}{增加研究生信息录入选项文档} % \begin{function}[added=2022-05-02,updated=2022-05-03]{info/graduate-type} @@ -811,12 +978,13 @@ % \end{syntax} % 设置研究生学位类别。 % \end{function} -% \begin{function}[added=2022-04-01,updated=2022-05-03]{info/title,info/title*} +% \begin{function}[added=2022-04-01,updated=2022-05-30]{info/title,info/title*} % \begin{syntax} % \optx{info/title}=\argx{论文中文标题} % \optx{info/title*}=\argx{论文英文标题} % \end{syntax} -% 设置论文标题。如果需要手动制定换行位点,请使用换行控制符(|\\|),最多两行。 +% 设置论文标题。建议使用换行控制符(|\\|)手动制定换行位点, +% 本科毕业设计论文最多两行,研究生学位论文无限制。 % \end{function} % \begin{function}[added=2022-04-01]{info/department} % \begin{syntax} @@ -914,11 +1082,18 @@ % \end{syntax} % 设置密级。 % \end{function} -% \begin{function}[added=2022-05-03]{info/submit-date} +% \begin{function}[added=2022-05-30]{info/secret-year} +% \begin{syntax} +% \optx{info/secret-year}=\argx{保密年限} +% \end{syntax} +% 设置保密年限,仅在\optx{secret-level}等于|秘密|时有效。 +% \end{function} +% \changes{v1.17.0.1}{2022/05/29}{研究生学位论文提交日期格式} +% \begin{function}[added=2022-05-03,updated=2022-05-29]{info/submit-date} % \begin{syntax} -% \optx{info/submit-date}=\argx{提交日期} +% \optx{info/submit-date}=\argx{yyyy-mm} % \end{syntax} -% 设置提交日期。 +% 设置提交日期,如果留空,则自动使用编译当天年份和月份。 % \end{function} % \begin{function}[added=2022-04-02]{info/abstract,info/abstract*} % \begin{syntax} @@ -934,14 +1109,306 @@ % \end{syntax} % 设置关键词,关键词之间需要使用英文半角逗号隔开。 % \end{function} +% \changes{v1.22.0.0}{2022/06/05}{符号对照表文件路径} +% \begin{function}[added=2022-06-05]{info/los} +% \begin{syntax} +% \optx{info/los}=\argx{符号对照表文件路径} +% \end{syntax} +% 设置符号对照表文件路径。 +% \end{function} +% \changes{v1.22.0.0}{2022/06/05}{缩略语对照表文件路径} +% \begin{function}[added=2022-06-05]{info/loa} +% \begin{syntax} +% \optx{info/loa}=\argx{缩略语对照表文件路径} +% \end{syntax} +% 设置缩略语对照表文件路径。 +% \end{function} +% \changes{v2.0.0.0}{2022/06/21}{修改参考文献文件路径选项名称} +% \begin{function}[added=2022-06-21]{info/bib-resource} +% \begin{syntax} +% \optx{info/bib-resource}=\argx{参考文献文件路径} +% \end{syntax} +% 设置参考文献\filex{.bib}文件路径,多个文件之间需要使用英文半角逗号隔开。 +% \end{function} % \begin{function}[added=2022-04-02]{info/acknowledgements} % \begin{syntax} % \optx{info/acknowledgements}=\argx{致谢文件路径} % \end{syntax} % 设置致谢文件路径,相应文件内仅撰写致谢内容,无需任何环境。 % \end{function} +% \begin{function}[added=2022-06-07]{info/bio} +% \begin{syntax} +% \optx{info/bio}=\argx{作者简介路径} +% \end{syntax} +% 设置作者简介文件路径,文件内容可参考\secrefx{作者简介配置}中的示例。 +% \end{function} +% \changes{v1.26.11.2}{2022/06/18}{研究生信息推荐值} +% \subsubsection{研究生信息推荐值} +% \label{研究生信息推荐值} +% 以下研究生信息推荐值均来自 +% 《西安电子科技大学研究生学位论文模板(2015年修订版)-2019.03修订》 +% 和《西安电子科技大学专业学位硕士学位论文封面及中英文题名页模板(2015年版)-2019.03修订》, +% 无任何修改,仅供参考。 +% \setlength\parindent{0pt} +% \begin{itemize} +% \item \optx{degree} (非专业硕士) +% \begin{itemize} +% \item 工学硕士 +% \item 工学博士 +% \item 哲学硕士 +% \item 经济学硕士 +% \item 法学硕士 +% \item 教育学硕士 +% \item 文学硕士 +% \item 理学硕士 +% \item 理学博士 +% \item 军事学硕士 +% \item 军事学博士 +% \item 管理学硕士 +% \item 管理学博士 +% \end{itemize} +% \item \optx{degree} (专业硕士) +% \begin{itemize} +% \item 金融硕士 +% \item 应用统计硕士 +% \item 翻译硕士 +% \item 工程硕士 +% \item 工商管理硕士 +% \item 公共管理硕士 +% \end{itemize} +% \item \optx{degree*} +% \begin{itemize} +% \item Finance +% \item Applied Statistics +% \item Translation +% \item Engineering +% \item Business Administration +% \item Public Administration +% \end{itemize} +% \item \optx{department} +% \begin{itemize} +% \item 通信工程学院 +% \item 电子工程学院 +% \item 计算机科学与技术学院 +% \item 机电工程学院 +% \item 物理与光电工程学院 +% \item 经济与管理学院 +% \item 数学与统计学院 +% \item 微电子学院 +% \item 外国语学院 +% \item 生命科学技术学院 +% \item 空间科学与技术学院 +% \item 先进材料与纳米科技学院 +% \item 网络与信息安全学院 +% \item 人文学院 +% \item 马克思主义学院 +% \item 人工智能学院 +% \end{itemize} +% \item \optx{major} +% \begin{itemize} +% \item 哲学 +% \item 应用经济学 +% \item 马克思主义理论 +% \item 教育学 +% \item 体育学 +% \item 外国语言文学 +% \item 数学 +% \item 物理学 +% \item 统计学 +% \item 力学 +% \item 机械工程 +% \item 光学工程 +% \item 仪器科学与技术 +% \item 材料科学与工程 +% \item 电气工程 +% \item 电子科学与技术 +% \item 信息与通信工程 +% \item 控制科学与工程 +% \item 计算机科学与技术 +% \item 化学工程与技术 +% \item 交通运输工程 +% \item 环境科学与工程 +% \item 生物医学工程 +% \item 软件工程 +% \item 军队指挥学 +% \item 管理科学与工程 +% \item 工商管理 +% \item 公共管理 +% \item 图书情报与档案管理 +% \item 网络空间安全 +% \end{itemize} +% \item \optx{major*} +% \begin{itemize} +% \item Philosophy +% \item Applied Economics +% \item Marxist Theory +% \item Education Science +% \item Science of Physical Culture and Sports +% \item Foreign Languages and Literature +% \item Mathematics +% \item Physics +% \item Statistics +% \item Mechanics +% \item Mechanical Engineering +% \item Optical Engineering +% \item Instrument Science and Technology +% \item Materials Science and Engineering +% \item Electrical Engineering +% \item Electronics Science and Technology +% \item Information and Communications Engineering +% \item Control Science and Engineering +% \item Computer Science and Technology +% \item Chemical Engineering and Technology +% \item Communication and Transportation Engineering +% \item Environmental Science and Engineering +% \item Biomedical Engineering +% \item Software Engineering +% \item Science of Command +% \item Management Science and Engineering +% \item Business Administration +% \item Public Management +% \item Science of Library, Information and Archival +% \item Cyber Security +% \end{itemize} +% \item \optx{sub-major} +% \begin{itemize} +% \item 美学 +% \item 宗教学 +% \item 国民经济学 +% \item 金融学 +% \item 产业经济学 +% \item 马克思主义基本原理 +% \item 思想政治教育 +% \item 高等教育学 +% \item 教育技术学 +% \item 教育哲学 +% \item 体育教育训练学 +% \item 英语语言文学 +% \item 外国语言学及应用语言学 +% \item 计算数学 +% \item 概率论与数理统计 +% \item 应用数学 +% \item 运筹学与控制论 +% \item 等离子体物理 +% \item 凝聚态物理 +% \item 光学 +% \item 无线电物理 +% \item 统计学 +% \item 工程力学 +% \item 机械制造及其自动化 +% \item 机械电子工程 +% \item 机械设计及理论 +% \item 电子机械科学与技术 +% \item 工业设计 +% \item 光学工程 +% \item 精密仪器及机械 +% \item 测试计量技术及仪器 +% \item 材料物理与化学 +% \item 材料学 +% \item 电机与电器 +% \item 电力电子与电力传动 +% \item 物理电子学 +% \item 电路与系统 +% \item 微电子学与固体电子学 +% \item 电磁场与微波技术 +% \item 信息对抗技术 +% \item 集成电路系统设计 +% \item 通信与信息系统 +% \item 信号与信息处理 +% \item 智能信息处理 +% \item 空间信息科学与技术 +% \item 控制理论与控制工程 +% \item 检测技术与自动化装置 +% \item 系统工程 +% \item 模式识别与智能系统 +% \item 导航、制导与控制 +% \item 计算机系统结构 +% \item 计算机软件与理论 +% \item 计算机应用技术 +% \item 应用化学 +% \item 交通信息工程及控制 +% \item 环境科学 +% \item 环境工程 +% \item 生物医学工程 +% \item 生物材料与细胞工程 +% \item 软件工程 +% \item 软件工程技术 +% \item 军事通信学 +% \item 密码学 +% \item 管理科学与工程 +% \item 管理哲学 +% \item 会计学 +% \item 企业管理 +% \item 技术经济及管理 +% \item 行政管理 +% \item 图书馆学 +% \item 情报学 +% \item 光通信 +% \item 信息安全 +% \item 生物信息科学与技术 +% \item 机器人技术 +% \item 遥感信息科学与技术 +% \item 空间科学与技术 +% \item 马克思主义中国化研究 +% \item 外国文学 +% \item 翻译学 +% \item 基础数学 +% \item 流体力学 +% \item 固体力学 +% \item 智能机电系统及测控技术 +% \item 空间科学仪器与电磁实验技术 +% \item 飞行器测控与导航制导 +% \item 智能检测与新型传感器 +% \end{itemize} +% \item \optx{domain} +% \begin{itemize} +% \item 金融 +% \item 应用统计 +% \item 英语笔译 +% \item 机械工程 +% \item 光学工程 +% \item 仪器仪表工程 +% \item 材料工程 +% \item 电子与通信工程 +% \item 集成电路工程 +% \item 控制工程 +% \item 计算机技术 +% \item 软件工程 +% \item 生物医学工程 +% \item 航天工程 +% \item 项目管理 +% \item 物流工程 +% \item 工商管理 +% \item 公共管理 +% \end{itemize} +% \item \optx{supervisor-title} +% \begin{itemize} +% \item 教授 +% \item 副教授 +% \end{itemize} +% \item \optx{supervisor-title*} +% \begin{itemize} +% \item Professor +% \item Associate Professor +% \end{itemize} +% \item \optx{supervisor-enterprise-title} +% \begin{itemize} +% \item 研究员 +% \item 副研究员 +% \item 高工 +% \end{itemize} +% \item \optx{supervisor-enterprise-title*} +% \begin{itemize} +% \item Research Fellow +% \item Associate Research Fellow +% \item Senior Engineer +% \end{itemize} +% \end{itemize} +% \setlength\parindent{2em} % \subsection{额外命令} % \label{额外命令} +% \subsubsection{\tn{noauxwrite}} +% \label{noauxwrite} % \begin{function}[added=2022-05-13]{\noauxwrite} % \begin{syntax} % \tn{noauxwrite}\marg{参考文献引用命令} @@ -952,6 +1419,35 @@ % \caption{本文与文献\noauxwrite{\parencite{某文献}}计算开销对比} % \end{latexexample} % \end{function} +% \changes{v1.30.0.0}{2022/06/20}{英文研究生学位论文双语标题} +% \subsubsection{英文研究生学位论文双语标题} +% \label{英文研究生学位论文双语标题} +% \begin{function}[added=2022-06-20]{\chapter,\section,\subsection} +% \begin{syntax} +% \tn{chapter}\marg{英文标题}\marg{中文标题} +% \tn{section}\marg{英文标题}\marg{中文标题} +% \tn{subsection}\marg{英文标题}\marg{中文标题} +% \end{syntax} +% 在英文研究生学位论文中一二三级标题为中英双语,其他级别标题为英文。 +% 一个简单的例子如下所示: +% \begin{latexexample}[moretexcs={\chapter,\section,\subsection,\subsubsection,\paragraph,\subparagraph}] +% \chapter{This Is Chapter}{这是一级标题} +% \section{This Is Section}{这是二级标题} +% \subsection{This Is Subsection}{这是三级标题} +% \subsubsection{This Is Subsubsection} +% \paragraph{This Is Paragraph} +% \subparagraph{This Is Subparagraph} +% \end{latexexample} +% \end{function} +% \subsection{隐藏功能} +% \changes{v1.26.11.1}{2022/06/17}{带教导师与挂名导师} +% \subsubsection{带教导师与挂名导师} +% 已和学位办确认,对于研究生,如挂名导师与带教导师不是一人的, +% 仅需填写带教导师,无需填写挂名导师。 +% 如有特殊需求,需要填写两位老师, +% 可在\optx{info/supervisor}、\optx{info/supervisor*}、 +% \optx{info/supervisor-title}和\optx{info/supervisor-title*}中 +% 使用逗号分隔两位老师的信息。 % \section{贡献者} % \xduts{}的开发过程中,唯一维护者为 % \href{https://github.com/note286/}{\ttfamily @note286}。 @@ -968,11 +1464,7 @@ % 《在\LaTeX{}中进行文学编程》\footurl{https://liam.page/2015/01/23/literate-programming-in-latex/} % 和《Good things come in little packages: An introduction to writing .ins and .dtx files》\footurl{https://www.tug.org/TUGboat/tb29-2/tb92pakin.pdf} % 提供了很大帮助。 -% 在文档的编写过程中,参考了 -% \filex{ctex.dtx}\footctan{language/chinese/ctex/ctex.dtx}、 -% \filex{fduthesis.dtx}\footctan{macros/latex/contrib/fduthesis/fduthesis.dtx}、 -% \filex{njuthesis.dtx}\footctan{macros/unicodetex/latex/njuthesis/njuthesis.dtx} -% 和\filex{thuthesis.dtx}\footctan{macros/latex/contrib/thuthesis/thuthesis.dtx}。 +% 在文档的编写过程中,参考了\filex{ctex.dtx}、\filex{fduthesis.dtx}、\filex{njuthesis.dtx}和\filex{thuthesis.dtx}。 % \clearpage % \section{代码实现} % \changes{v0.1.0.0}{2022/04/03}{基本完成本科毕业设计论文模板} @@ -1590,9 +2082,9 @@ \cs_new:Npn \@@_set_latin_mono_font:nnnnn #1#2#3#4#5 { \str_if_eq:NNTF { \l_@@_font_type_tl } { font } - { \setmonofont{ #1 } [ \@@_set_latin_scale: \@@_off_latin_ligatures: ]} + { \setmonofont { #1 } [ \@@_set_latin_scale: \@@_off_latin_ligatures: ] } { - \setmonofont{ #2 } + \setmonofont { #2 } [ \@@_font_path: \@@_set_latin_scale: @@ -1654,7 +2146,7 @@ % \begin{macrocode} \cs_new:Npn \@@_set_latin_mono_font:nnnn #1#2#3#4 { - \setmonofont{ #1 } + \setmonofont { #1 } [ \@@_set_latin_scale: \@@_off_latin_ligatures: @@ -1766,9 +2258,9 @@ \cs_new:Npn \@@_load_math_font_cambria: { \@@_load_unicode_math_pkg: - \str_if_eq:NNTF { \l_@@_font_type_tl} { font} - { \setmathfont { Cambria~Math} } - { \setmathfont { cambria.ttc} [ Path = \l_@@_font_path_tl/, FontIndex = 1 ] } + \str_if_eq:NNTF { \l_@@_font_type_tl } { font } + { \setmathfont { Cambria~Math } } + { \setmathfont { cambria.ttc } [ Path = \l_@@_font_path_tl/, FontIndex = 1 ] } } % \end{macrocode} % \end{macro} @@ -1868,13 +2360,14 @@ % \l_@@_dept_str, % \l_@@_major_str, % \l_@@_author_str, -% \l_@@_supv_str, +% \l_@@_supv_clist, % \l_@@_supv_ent_str, % \l_@@_student_id_str, % \l_@@_abstract_zh_tl, % \l_@@_abstract_en_tl, % \l_@@_keywords_zh_clist, % \l_@@_keywords_en_clist, +% \l_@@_bib_file_clist, % \l_@@_ack_tl % } % 论文标题。 @@ -1897,7 +2390,7 @@ % \end{macrocode} % 导师姓名。 % \begin{macrocode} -\str_new:N \l_@@_supv_str +\clist_new:N \l_@@_supv_clist % \end{macrocode} % 校外导师姓名。 % \begin{macrocode} @@ -1923,6 +2416,10 @@ % \begin{macrocode} \clist_new:N \l_@@_keywords_en_clist % \end{macrocode} +% 参考文献文件。 +% \begin{macrocode} +\clist_new:N \l_@@_bib_file_clist +% \end{macrocode} % 致谢。 % \begin{macrocode} \tl_new:N \l_@@_ack_tl @@ -1952,7 +2449,7 @@ % \end{macrocode} % 导师姓名。 % \begin{macrocode} - supervisor .tl_set:N = \l_@@_supv_str, + supervisor .clist_set:N = \l_@@_supv_clist, % \end{macrocode} % 校外导师姓名。 % \begin{macrocode} @@ -1978,6 +2475,10 @@ % \begin{macrocode} keywords* .clist_set:N = \l_@@_keywords_en_clist, % \end{macrocode} +% 参考文献文件。 +% \begin{macrocode} + bib-resource .clist_set:N = \l_@@_bib_file_clist, +% \end{macrocode} % 致谢。 % \begin{macrocode} acknowledgements .tl_set:N = \l_@@_ack_tl @@ -2000,11 +2501,30 @@ info / abstract* = { }, info / keywords = { }, info / keywords* = { }, + info / bib-resource = { }, info / acknowledgements = { } } % \end{macrocode} % \end{macro} +% \begin{variable} +% { +% \l_@@_supv_str, +% \l_@@_supv_ii_str +% } +% \changes{v1.16.0.0}{2022/05/22}{拆分导师姓名} +% 拆分导师姓名。 +% \begin{macrocode} +\str_new:N \l_@@_supv_str +\str_new:N \l_@@_supv_ii_str +\ctex_at_end_preamble:n + { + \str_set:Nx \l_@@_supv_str { \clist_item:Nn \l_@@_supv_clist { 1 } } + \str_set:Nx \l_@@_supv_ii_str { \clist_item:Nn \l_@@_supv_clist { 2 } } + } +% \end{macrocode} +% \end{variable} % \begin{macrocode} +% %<*xduugthesis> % \end{macrocode} % \subsubsection{本科生} @@ -2071,10 +2591,10 @@ % \l_@@_degree_str, % \l_@@_degree_en_str, % \l_@@_author_en_str, -% \l_@@_supv_en_str, +% \l_@@_supv_en_clist, % \l_@@_supv_ent_en_str, -% \l_@@_supv_t_str, -% \l_@@_supv_t_en_str, +% \l_@@_supv_t_clist, +% \l_@@_supv_t_en_clist, % \l_@@_supv_ent_t_str, % \l_@@_supv_ent_t_en_str, % \l_@@_title_en_str, @@ -2083,7 +2603,11 @@ % \l_@@_domain_str, % \l_@@_clc_str, % \l_@@_secret_lv_str, -% \l_@@_submit_date_str +% \l_@@_secret_year_str, +% \l_@@_submit_date_str, +% \l_@@_los_str, +% \l_@@_loa_str, +% \l_@@_bio_str % } % 研究生类型。 % \begin{macrocode} @@ -2104,7 +2628,7 @@ % \end{macrocode} % 导师姓名拼音。 % \begin{macrocode} -\str_new:N \l_@@_supv_en_str +\clist_new:N \l_@@_supv_en_clist % \end{macrocode} % 校外导师姓名拼音。 % \begin{macrocode} @@ -2112,8 +2636,8 @@ % \end{macrocode} % 导师职称。 % \begin{macrocode} -\str_new:N \l_@@_supv_t_str -\str_new:N \l_@@_supv_t_en_str +\clist_new:N \l_@@_supv_t_clist +\clist_new:N \l_@@_supv_t_en_clist % \end{macrocode} % 校外导师职称。 % \begin{macrocode} @@ -2144,10 +2668,26 @@ % \begin{macrocode} \str_new:N \l_@@_secret_lv_str % \end{macrocode} +% 保密年限。 +% \begin{macrocode} +\str_new:N \l_@@_secret_year_str +% \end{macrocode} % 提交日期。 % \begin{macrocode} \str_new:N \l_@@_submit_date_str % \end{macrocode} +% 符号对照表文件路径。 +% \begin{macrocode} +\str_new:N \l_@@_los_str +% \end{macrocode} +% 缩略语对照表文件路径。 +% \begin{macrocode} +\str_new:N \l_@@_loa_str +% \end{macrocode} +% 作者简介文件路径。 +% \begin{macrocode} +\str_new:N \l_@@_bio_str +% \end{macrocode} % \end{variable} % \begin{macro}{\keys_define:nn} % 定义信息键值。 @@ -2176,7 +2716,7 @@ % \end{macrocode} % 导师姓名拼音。 % \begin{macrocode} - supervisor* .tl_set:N = \l_@@_supv_en_str, + supervisor* .clist_set:N = \l_@@_supv_en_clist, % \end{macrocode} % 校外导师姓名拼音。 % \begin{macrocode} @@ -2184,8 +2724,8 @@ % \end{macrocode} % 导师职称。 % \begin{macrocode} - supervisor-title .tl_set:N = \l_@@_supv_t_str, - supervisor-title* .tl_set:N = \l_@@_supv_t_en_str, + supervisor-title .clist_set:N = \l_@@_supv_t_clist, + supervisor-title* .clist_set:N = \l_@@_supv_t_en_clist, % \end{macrocode} % 校外导师职称。 % \begin{macrocode} @@ -2217,9 +2757,25 @@ secret-level .choices:nn = { 秘密, 公开 } { \tl_set_eq:NN \l_@@_secret_lv_str \l_keys_choice_tl }, % \end{macrocode} +% 保密年限。 +% \begin{macrocode} + secret-year .tl_set:N = \l_@@_secret_year_str, +% \end{macrocode} % 提交日期。 % \begin{macrocode} - submit-date .tl_set:N = \l_@@_submit_date_str + submit-date .tl_set:N = \l_@@_submit_date_str, +% \end{macrocode} +% 符号对照表文件路径。 +% \begin{macrocode} + los .tl_set:N = \l_@@_los_str, +% \end{macrocode} +% 缩略语对照表文件路径。 +% \begin{macrocode} + loa .tl_set:N = \l_@@_loa_str, +% \end{macrocode} +% 作者简介文件路径。 +% \begin{macrocode} + bio .tl_set:N = \l_@@_bio_str } % \end{macrocode} % \end{macro} @@ -2247,20 +2803,77 @@ info / domain = { }, info / clc = { }, info / secret-level = { 公开 }, - info / submit-date = { } + info / secret-year = { }, + info / submit-date = { }, + info / los = { }, + info / loa = { }, + info / bio = { } } % \end{macrocode} % \end{macro} +% \begin{variable} +% { +% \l_@@_supv_en_str, +% \l_@@_supv_ii_en_str, +% \l_@@_supv_t_str, +% \l_@@_supv_ii_t_str, +% \l_@@_supv_t_en_str, +% \l_@@_supv_ii_t_en_str +% } +% \changes{v1.16.0.0}{2022/05/22}{拆分导师英文姓名和中英文职称} +% 拆分导师英文姓名和中英文职称。 +% \begin{macrocode} +\str_new:N \l_@@_supv_en_str +\str_new:N \l_@@_supv_ii_en_str +\str_new:N \l_@@_supv_t_str +\str_new:N \l_@@_supv_ii_t_str +\str_new:N \l_@@_supv_t_en_str +\str_new:N \l_@@_supv_ii_t_en_str +\ctex_at_end_preamble:n + { + \str_set:Nx \l_@@_supv_en_str + { \clist_item:Nn \l_@@_supv_en_clist { 1 } } + \str_set:Nx \l_@@_supv_ii_en_str + { \clist_item:Nn \l_@@_supv_en_clist { 2 } } + \str_set:Nx \l_@@_supv_t_str + { \clist_item:Nn \l_@@_supv_t_clist { 1 } } + \str_set:Nx \l_@@_supv_ii_t_str + { \clist_item:Nn \l_@@_supv_t_clist { 2 } } + \str_set:Nx \l_@@_supv_t_en_str + { \clist_item:Nn \l_@@_supv_t_en_clist { 1 } } + \str_set:Nx \l_@@_supv_ii_t_en_str + { \clist_item:Nn \l_@@_supv_t_en_clist { 2 } } + } +% \end{macrocode} +% \end{variable} % \begin{macrocode} % +%<*thesis> +% \end{macrocode} +% \subsection{标签宏配置} +% \label{标签宏配置} +% \begin{macro} +% { +% \figurename, +% \figname, +% \tablename, +% \tabname, +% } +% \changes{v1.21.0.0}{2022/06/01}{配置图表标签宏} +% \begin{macrocode} +\cs_set:Npn \figurename { \@@_lang_switch:nn { 图 } { Figure } } +\cs_new_eq:NN \figname \figurename +\cs_set:Npn \tablename { \@@_lang_switch:nn { 表 } { Table } } +\cs_new_eq:NN \tabname \tablename % \end{macrocode} +% \end{macro} % \subsection{样式配置} % \begin{variable} % { % \l_@@_en_cjk_font_bool, % \l_@@_lang_tl, % \l_@@_bib_tool_tl, -% \l_@@_bib_file_clist, +% \l_@@_biblatex_option_tl, % \l_@@_cap_label_sep_tl, % \l_@@_tab_small_bool, % \l_@@_alg_small_bool, @@ -2287,9 +2900,9 @@ % \begin{macrocode} \tl_new:N \l_@@_bib_tool_tl % \end{macrocode} -% 参考文献文件。 +% 修改\pkgx{biblatex}默认选项。 % \begin{macrocode} -\clist_new:N \l_@@_bib_file_clist +\tl_new:N \l_@@_biblatex_option_tl % \end{macrocode} % 是否在\tnx{ref}和\tnx{pageref}两侧自动调整中英文间空白。 % \begin{macrocode} @@ -2350,9 +2963,9 @@ bib-backend .choices:nn = { bibtex, biblatex } { \tl_set_eq:NN \l_@@_bib_tool_tl \l_keys_choice_tl }, % \end{macrocode} -% 参考文献文件。 +% 修改\pkgx{biblatex}默认选项。 % \begin{macrocode} - bib-resource .clist_set:N = \l_@@_bib_file_clist, + biblatex-option .tl_set:N = \l_@@_biblatex_option_tl, % \end{macrocode} % 是否在\tnx{ref}和\tnx{pageref}两侧自动调整中英文间空白。 % \begin{macrocode} @@ -2405,7 +3018,7 @@ style / en-cjk-font = false, style / language = zh, style / bib-backend = biblatex, - style / bib-resource = { }, + style / biblatex-option = { }, style / ref-add-space = false, style / caption-label-sep = { 0.75em }, style / table-small-font = true, @@ -2413,54 +3026,180 @@ style / before-skip = { 24pt, 18pt, 12pt, 12pt, 12pt, 12pt }, style / after-skip = { 18pt, 12pt, 6pt, 6pt, 6pt, 6pt }, style / symmetric-margin = false, - style / page-vertical-align = {顶部对齐} + style / page-vertical-align = { 顶部对齐 } } % \end{macrocode} % \end{macro} % \begin{macrocode} % +%<*xdupgthesis> % \end{macrocode} +% \changes{v1.22.0.0}{2022/06/05}{对照表样式配置} +% \subsection{对照表样式配置} +% \begin{variable} +% { +% \l_@@_customize_los_bool, +% \l_@@_customize_loa_bool, +% \l_@@_colspec_los_tl, +% \l_@@_colspec_loa_tl, +% \l_@@_title_row_los_bool, +% \l_@@_title_row_los_bool, +% } +% 是否完全自定义符号对照。 % \begin{macrocode} -%<*class|xdufont> +\bool_new:N \l_@@_customize_los_bool % \end{macrocode} -% \subsection{键值选项} -% \begin{macro}{\xdusetup} -% 用户设置接口。 +% 是否完全自定义缩略语对照表。 % \begin{macrocode} -\NewDocumentCommand \xdusetup { m } - { \keys_set:nn { xdu } { #1 } } +\bool_new:N \l_@@_customize_loa_bool % \end{macrocode} -% \end{macro} +% 符号对照表列格式。 +% \begin{macrocode} +\tl_new:N \l_@@_colspec_los_tl +% \end{macrocode} +% 缩略语对照表列格式。 +% \begin{macrocode} +\tl_new:N \l_@@_colspec_loa_tl +% \end{macrocode} +% 是否每页均显示符号对照表标题行。 +% \begin{macrocode} +\bool_new:N \l_@@_title_row_los_bool +% \end{macrocode} +% 是否每页均显示缩略语对照表标题行。 +% \begin{macrocode} +\bool_new:N \l_@@_title_row_loa_bool +% \end{macrocode} +% \end{variable} % \begin{macro}{\keys_define:nn} -% 定义元(meta)键值对。 +% 定义信息键值。 % \begin{macrocode} -\keys_define:nn { xdu } +\keys_define:nn { xdu / style } { - style .meta:nn = { xdu / style } { #1 }, - info .meta:nn = { xdu / info } { #1 } +% \end{macrocode} +% 是否完全自定义符号对照。 +% \begin{macrocode} + customize-los .bool_set:N = \l_@@_customize_los_bool, +% \end{macrocode} +% 是否完全自定义缩略语对照表。 +% \begin{macrocode} + customize-loa .bool_set:N = \l_@@_customize_loa_bool, +% \end{macrocode} +% 符号对照表列格式。 +% \begin{macrocode} + colspec-los .tl_set:N = \l_@@_colspec_los_tl, +% \end{macrocode} +% 缩略语对照表列格式。 +% \begin{macrocode} + colspec-loa .tl_set:N = \l_@@_colspec_loa_tl, +% \end{macrocode} +% 是否每页均显示符号对照表标题行。 +% \begin{macrocode} + title-row-los .bool_set:N = \l_@@_title_row_los_bool, +% \end{macrocode} +% 是否每页均显示缩略语对照表标题行。 +% \begin{macrocode} + title-row-loa .bool_set:N = \l_@@_title_row_loa_bool } % \end{macrocode} % \end{macro} -% \begin{macro}{\ProcessKeysOptions} -% 处理选项。 +% \begin{macro}{\keys_set:nn} +% 初始设置。 % \begin{macrocode} -\ProcessKeysOptions { xdu / style } +\keys_set:nn { xdu } + { + style / customize-los = { true }, + style / customize-loa = { true }, + style / colspec-los = { Q[l,m]X[l,m] }, + style / colspec-loa = { Q[l,m]X[l,m]X[l,m] }, + style / title-row-los = { false }, + style / title-row-loa = { false } + } % \end{macrocode} % \end{macro} +% \changes{v1.26.0.0}{2022/06/07}{作者简介样式配置} +% \subsection{作者简介样式配置} +% \begin{variable} +% { +% \l_@@_customize_edubg_bool, +% \l_@@_customize_resresult_bool +% } +% 是否完全自定义作者简介中教育背景。 % \begin{macrocode} -% -%<*xdupgthesis> +\bool_new:N \l_@@_customize_edubg_bool % \end{macrocode} -% \subsection{内部文本} -% \begin{variable}{l_@@_header_str} -% \changes{v1.7.0.0}{2022/05/02}{研究生页眉文本} -% 研究生页眉文本。 +% 是否完全自定义作者简介中攻读硕士学位期间的研究成果。 % \begin{macrocode} -\str_new:N \l_@@_header_str -\ctex_at_end_preamble:n +\bool_new:N \l_@@_customize_resresult_bool +% \end{macrocode} +% \end{variable} +% \begin{macro}{\keys_define:nn} +% 定义信息键值。 +% \begin{macrocode} +\keys_define:nn { xdu / style } { - \@@_lang_switch:nn - { +% \end{macrocode} +% 是否完全自定义作者简介中教育背景。 +% \begin{macrocode} + customize-edubg .bool_set:N = \l_@@_customize_edubg_bool, +% \end{macrocode} +% 是否完全自定义作者简介中攻读硕士学位期间的研究成果。 +% \begin{macrocode} + customize-resresult .bool_set:N = \l_@@_customize_resresult_bool + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\keys_set:nn} +% 初始设置。 +% \begin{macrocode} +\keys_set:nn { xdu } + { + style / customize-edubg = { true }, + style / customize-resresult = { true } + } +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +% +%<*class|xdufont> +% \end{macrocode} +% \subsection{键值选项} +% \begin{macro}{\xdusetup} +% 用户设置接口。 +% \begin{macrocode} +\NewDocumentCommand \xdusetup { m } + { \keys_set:nn { xdu } { #1 } } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\keys_define:nn} +% 定义元(meta)键值对。 +% \begin{macrocode} +\keys_define:nn { xdu } + { + style .meta:nn = { xdu / style } { #1 }, + info .meta:nn = { xdu / info } { #1 } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ProcessKeysOptions} +% 处理选项。 +% \begin{macrocode} +\ProcessKeysOptions { xdu / style } +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +% +%<*xdupgthesis> +% \end{macrocode} +% \subsection{内部文本} +% \begin{variable}{l_@@_header_str} +% \changes{v1.7.0.0}{2022/05/02}{研究生页眉文本} +% 研究生页眉文本。 +% \begin{macrocode} +\str_new:N \l_@@_header_str +\ctex_at_end_preamble:n + { + \@@_lang_switch:nn + { \tl_if_eq:NnTF \l_@@_gr_type_tl { 硕士 } { \str_set:Nn \l_@@_header_str { 西安电子科技大学硕士学位论文 } } { \str_set:Nn \l_@@_header_str { 西安电子科技大学博士学位论文 } } @@ -2521,6 +3260,29 @@ } % \end{macrocode} % \end{variable} +% \begin{macro}{\@@_split_title:Nn,\@@_split_title:NV} +% 拆分标题。 +% \begin{arguments} +% \item 拆分后标题。 +% \item 拆分前标题。 +% \end{arguments} +% \begin{macrocode} +\cs_new_protected:Npn \@@_split_title:Nn #1#2 + { + \seq_new:N \l_@@_title_seq + \tl_if_in:nnTF { #2 } { \\ } + { + \seq_set_split:Nnn \l_@@_title_seq { \\ } { #2 } + \clist_set_from_seq:NN #1 \l_@@_title_seq + } + { + \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 1 } { 14 } } + \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 15 } { -1 } } + } + } +\cs_generate_variant:Nn \@@_split_title:Nn { NV } +% \end{macrocode} +% \end{macro} % \begin{macro}{\@@_uline:n} % 绘制下划线。 % \begin{macrocode} @@ -2590,10 +3352,10 @@ % \begin{macrocode} \cs_new:Npn \@@_n_chapter_head_ii:nn #1#2 { - { + \group_begin: \ctexset { chapter / format = { #2 } } \@@_n_chapter_head:n { #1 } - } + \group_end: } % \end{macrocode} % \end{macro} @@ -2624,10 +3386,10 @@ % \begin{macrocode} \cs_new:Npn \@@_n_chapter_head_ii:nnn #1#2#3 { - { + \group_begin: \ctexset { chapter / format = { #3 } } \@@_n_chapter_head:nn { #1 } { #2 } - } + \group_end: } % \end{macrocode} % \end{macro} @@ -2658,7 +3420,25 @@ } % \end{macrocode} % \end{macro} +% \begin{macro}{\@@_n_chapter_head_toc_ii:nn} +% \changes{v1.28.1.0}{2022/06/18}{新建无编号章节并单独添加目录及页眉并单独设置标题样式} +% 新建无编号章节并单独添加目录及页眉并单独设置标题样式。 +% \begin{arguments} +% \item 目录、书签、页眉处。 +% \item 章节标题处。 +% \end{arguments} +% \begin{macrocode} +\cs_new:Npn \@@_n_chapter_head_toc_ii:nn #1#2 + { + \group_begin: + \ctexset { chapter / format = { #2 } } + \@@_n_chapter_head_toc:n { #1 } + \group_end: + } +% \end{macrocode} +% \end{macro} % \begin{macro}{\@@_typeout_keywords:nNn} +% \changes{v1.20.0.0}{2022/05/30}{允许关键词标签带格式} % 排版关键词。 % \begin{arguments} % \item 标签名称。 @@ -2668,11 +3448,11 @@ % \begin{macrocode} \cs_new:Npn \@@_typeout_keywords:nNn #1#2#3 { - \str_clear_new:N \l_@@_keywords_label_str - \str_set:Nn \l_@@_keywords_label_str { #1 } + \tl_clear_new:N \l_@@_keywords_label_str + \tl_set:Nn \l_@@_keywords_label_tl { #1 } \dim_zero_new:N \l_@@_keywords_label_dim - \@@_get_text_width:NV \l_@@_keywords_label_dim \l_@@_keywords_label_str - \begin { list } { \l_@@_keywords_label_str } + \@@_get_text_width:NV \l_@@_keywords_label_dim \l_@@_keywords_label_tl + \begin { list } { \l_@@_keywords_label_tl } { \labelwidth \l_@@_keywords_label_dim \labelsep \c_zero_dim @@ -2684,6 +3464,24 @@ } % \end{macrocode} % \end{macro} +% \begin{macro}{\@@_str_max_dim:Nn} +% \changes{v1.26.4.0}{2022/06/10}{计算字符串多大长度} +% 计算字符串多大长度。 +% \begin{arguments} +% \item 最大值长度。 +% \item 字符串。 +% \end{arguments} +% \begin{macrocode} +\dim_new:N \l_@@_str_dim +\box_new:N \l_@@_str_box +\cs_new:Npn \@@_str_max_dim:Nn #1#2 + { + \hbox_set:Nn \l_@@_str_box { #2 } + \dim_set:Nn \l_@@_str_dim { \box_wd:N \l_@@_str_box } + \dim_set:Nn #1 { \dim_max:nn { \l_@@_str_dim } { #1 } } + } +% \end{macrocode} +% \end{macro} % \subsection{额外命令} % \begin{macro}{\noauxwrite} % \changes{v1.15.0.0}{2022/05/13}{\tnx{noauxwrite}允许添加不影响现有引用列表顺序的引用} @@ -2706,10 +3504,12 @@ % \begin{macro}{\geometry,\newgeometry,\savegeometry} % \changes{v1.5.1.0}{2022/05/01}{修正页脚高度} % \changes{v1.5.2.0}{2022/05/02}{修正底部页边距高度} +% \changes{v1.26.8.0}{2022/06/13}{修正研究生页眉高度} % 正文页面。 % \begin{description} % \item[本科生] 上3、下2、内3、外2;装订线1;页眉2、页脚1。 % \item[研究生] 上3、\textbf{下2.5}、内2.5、外2.5;装订线0.5;页眉2、页脚$2.5-1.75=0.75$。 +% 实测上3.14,headheight和headsep均为实测。 % \end{description} % \begin{macrocode} \newgeometry @@ -2724,12 +3524,13 @@ foot = 1cm % %<*xdupgthesis> - top = 3cm, + top = 3.14cm, bottom = 2.5cm, inner = 2.5cm, outer = 2.5cm, bindingoffset = 0.5cm, - head = 2cm, + headheight = 20pt, + headsep = 10pt, foot = 0.75cm % } @@ -2754,12 +3555,13 @@ foot = 1cm % %<*xdupgthesis> - top = 3cm, - bottom = 2.5cm, - inner = 2.75cm, - outer = 2.75cm, - head = 2cm, - foot = 0.75cm + top = 3.14cm, + bottom = 2.5cm, + inner = 2.75cm, + outer = 2.75cm, + headheight = 20pt, + headsep = 10pt, + foot = 0.75cm % } \savegeometry { main-sym } @@ -2768,7 +3570,7 @@ % 封面页面。 % \begin{description} % \item[本科生] 上2.5、下2、内3、外2。 -% \item[研究生] 上3、下2、内3、外2.5。 +% \item[研究生] 上3、下1、内3、外2.5。 % \end{description} % \begin{macrocode} \newgeometry @@ -2781,7 +3583,7 @@ % %<*xdupgthesis> top = 3cm, - bottom = 2cm, + bottom = 1cm, inner = 3cm, outer = 2.5cm % @@ -2857,6 +3659,7 @@ % \changes{v0.1.1.0}{2022/04/03}{修正页眉字号} % \changes{v1.6.0.0}{2022/05/02}{设置页脚页码} % \changes{v1.7.0.0}{2022/05/02}{设置页眉} +% \changes{v1.26.9.0}{2022/06/13}{修正页眉文字和双横线高度} % 设置正文页眉页脚。 % \begin{description} % \item[本科生] 页眉:宋体五号,居中排列。左面页眉为论文题目,右面页眉为章次和章标题。页眉底划线的宽度为0.75磅。页码:宋体小五号,排在页眉行的最外侧,不加任何修饰。 @@ -2882,6 +3685,8 @@ \cs_set:Npn \headrulewidth { 0.5pt } \cs_set:Npn \headrule { + \hrule \@height 0pt + \skip_vertical:N 2pt \hrule \@height \headrulewidth \skip_vertical:N \headrulewidth \hrule \@height \headrulewidth @@ -2916,15 +3721,16 @@ %<*xduugthesis> % \end{macrocode} % \subsection{标题设置} +% \subsubsection{本科生} % 中文章标题黑体,三号,居中排列。节标题宋体,四号,居中排列。英文一级标题字体为Times New Roman,四号,正体,左对齐,以大写罗马数字(I、II 等)标出序号。其余各级标题的字体均为Times New Roman,小四号,正体。二级及以下级别的标题依次缩进4个英文字符,以1.1,1.2,1.1.1,1.1.2形式标出序号。 -% \subsubsection{章节层次} +% \paragraph{章节层次} % \begin{macro}{\ctexset} % 设置章节层次为subparagraph。 % \begin{macrocode} \ctexset { secnumdepth=5 } % \end{macrocode} % \end{macro} -% \subsubsection{章节名字} +% \paragraph{章节名字} % \begin{macro}{\ctexset} % 设置章节的名字。 % \begin{macrocode} @@ -2943,7 +3749,7 @@ } % \end{macrocode} % \end{macro} -% \subsubsection{章节编号} +% \paragraph{章节编号} % \begin{macro}{\ctexset} % \changes{v1.2.1.0}{2022/04/19}{修正英文论文标题序号} % 设置章节编号的数字输出格式。 @@ -2976,7 +3782,7 @@ } % \end{macrocode} % \end{macro} -% \subsubsection{章节和标题} +% \paragraph{章节和标题} % \begin{macro}{\@@_zh_t:nnn} % 设置中文章节名字和随后的标题内容格式。 % \begin{arguments} @@ -3085,6 +3891,149 @@ } % \end{macrocode} % \end{macro} +% \begin{macrocode} +% +%<*xdupgthesis> +% \end{macrocode} +% \changes{v1.27.0.0}{2022/06/18}{研究生学位论文章节标题样式} +% \subsubsection{研究生} +% \paragraph{章节层次} +% \begin{macro}{\ctexset} +% 设置章节层次为subparagraph。 +% \begin{macrocode} +\ctexset { secnumdepth=5 } +% \end{macrocode} +% \end{macro} +% \paragraph{章节名字} +% \begin{macro}{\ctexset} +% \changes{v1.29.2.0}{2022/06/19}{修正英文研究生学位论文一级标题名称} +% 设置章节的名字。 +% \begin{macrocode} +\ctex_at_end_preamble:n + { + \@@_lang_switch:nn + { \ctexset { chapter / name = { 第, 章 } } } + { \ctexset { chapter / name = { Chapter\space } } } + } +\ctexset + { + section / name = { }, + subsection / name = { }, + subsubsection / name = { (, ) }, + paragraph / name = { (, ) }, + subparagraph / name = { (, ) } + } +% \end{macrocode} +% \end{macro} +% \paragraph{章节编号} +% \begin{macro}{\ctexset} +% \changes{v1.29.2.0}{2022/06/19}{修正英文研究生学位论文一级标题数字输出格式} +% 设置章节编号的数字输出格式。 +% \begin{macrocode} +\ctex_at_end_preamble:n + { + \@@_lang_switch:nn + { \ctexset { chapter / number = { \chinese { chapter } } } } + { \ctexset { chapter / number = { \Roman { chapter } } } } + } +\ctexset + { + section / number = { \thesection }, + subsection / number = { \thesubsection }, + subsubsection / number = { \arabic { subsubsection } }, + paragraph / number = { \alph { paragraph } }, + subparagraph / number = { \roman { subparagraph } } + } +% \end{macrocode} +% \end{macro} +% \paragraph{章节格式} +% \begin{macro} +% { +% \@@_sec_format_i:n, +% \@@_sec_format_ii:, +% \@@_sec_format_iii:, +% \ctexset +% } +% \changes{v1.29.2.0}{2022/06/19}{修正英文研究生学位论文一级标题字体} +% 设置章节名字和随后的标题内容格式。 +% \begin{macrocode} +\cs_new:Npn \@@_sec_format_i:n #1 + { \@@_rm_family: \bfseries \zihao { #1 } \dim_set:Nn \baselineskip { 20pt } } +\cs_new:Npn \@@_sec_format_ii: + { \@@_sf_family: \centering \zihao { 3 } \dim_set:Nn \baselineskip { 20pt } } +\cs_new:Npn \@@_sec_format_iii: + { \@@_rm_family: \centering \zihao { 3 } \dim_set:Nn \baselineskip { 20pt } } +\ctex_at_end_preamble:n + { + \@@_lang_switch:nn + { \ctexset { chapter / format = { \@@_sec_format_ii: } } } + { \ctexset { chapter / format = { \@@_sec_format_iii: } } } + } +\ctexset + { + section / format = { \@@_sec_format_i:n { -3 } }, + subsection / format = { \@@_sec_format_i:n { 4 } }, + subsubsection / format = { \@@_sec_format_i:n { 4 } }, + paragraph / format = { \@@_sec_format_i:n { 4 } }, + subparagraph / format = { \@@_sec_format_i:n { 4 } } + } +% \end{macrocode} +% \end{macro} +% \paragraph{章节编号与标题间距} +% \begin{macro}{\ctexset} +% 设置章节编号与标题间距。 +% \begin{macrocode} +\ctexset + { + chapter / aftername = { \quad }, + section / aftername = { \enskip }, + subsection / aftername = { \enskip }, + subsubsection / aftername = { }, + paragraph / aftername = { }, + subparagraph / aftername = { } + } +% \end{macrocode} +% \end{macro} +% \paragraph{章节缩进} +% \begin{macro}{\ctexset} +% 设置章节标题本身的首行缩进。 +% \begin{macrocode} +\ctexset + { + chapter / indent = { 0bp }, + section / indent = { 0bp }, + subsection / indent = { 24bp }, + subsubsection / indent = { 24bp }, + paragraph / indent = { 24bp }, + subparagraph / indent = { 24bp } + } +% \end{macrocode} +% \end{macro} +% \paragraph{章节间距} +% \begin{macro}{\ctexset} +% 设置章节标题前后的垂直间距。 +% \begin{macrocode} +\ctexset + { + chapter / beforeskip = { 6pt }, + section / beforeskip = { 18pt }, + subsection / beforeskip = { 12pt }, + subsubsection / beforeskip = { 12pt }, + paragraph / beforeskip = { 12pt }, + subparagraph / beforeskip = { 12pt }, + chapter / afterskip = { 18pt }, + section / afterskip = { 12pt }, + subsection / afterskip = { 6pt }, + subsubsection / afterskip = { 6pt }, + paragraph / afterskip = { 6pt }, + subparagraph / afterskip = { 6pt } + } +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +% +%<*thesis> +% \end{macrocode} % \subsection{目录} % \begin{macro}{\RequirePackage} % \changes{v0.4.1.0}{2022/04/05}{设置目录样式} @@ -3095,6 +4044,11 @@ \RequirePackage { tocloft } % \end{macrocode} % \end{macro} +% \begin{macrocode} +% +%<*xduugthesis> +% \end{macrocode} +% \subsubsection{本科生} % \begin{variable}{\cftchapleader} % 修改目录中一级标题引导点。 % \begin{macrocode} @@ -3160,6 +4114,67 @@ % \end{variable} % \begin{macrocode} % +%<*xdupgthesis> +% \end{macrocode} +% \changes{v1.28.0.0}{2022/06/18}{研究生学位论文目录样式} +% \subsubsection{研究生} +% \begin{variable}{\cftdotsep} +% 修改引导点之间的距离。 +% \begin{macrocode} +\cs_set:Npn \cftdotsep { 0 } +% \end{macrocode} +% \end{variable} +% \begin{variable}{\cftchapleader} +% 修改目录中一级标题引导点。 +% \begin{macrocode} +\cs_set:Npn \cftchapleader { \cftdotfill { \cftdotsep } } +% \end{macrocode} +% \end{variable} +% \begin{variable} +% { +% \cftbeforechapskip, +% \cftbeforesecskip +% } +% 设置一级标题与其余各级标题条目前垂直间距一致。 +% \begin{macrocode} +\dim_set_eq:NN \cftbeforechapskip \cftbeforesecskip +% \end{macrocode} +% \end{variable} +% \begin{variable}{\cftchapfont} +% \changes{v1.29.2.0}{2022/06/19}{修正英文研究生学位论文目录中一级标题字体} +% 设置一级标题字体字号。 +% \begin{macrocode} +\ctex_at_end_preamble:n + { + \@@_lang_switch:nn + { \cs_set:Npn \cftchapfont { \@@_sf_family: \zihao { -4 } } } + { \cs_set:Npn \cftchapfont { \@@_rm_family: \zihao { -4 } } } + } +% \end{macrocode} +% \end{variable} +% \begin{variable} +% { +% \cftsecfont, +% \cftsubsecfont, +% \cftchappagefont, +% \cftsecpagefont, +% \cftsubsecpagefont +% } +% 设置二三级标题及一二三级标题页码字体字号。 +% \begin{macrocode} +\clist_map_inline:nn + { + \cftsecfont, + \cftsubsecfont, + \cftchappagefont, + \cftsecpagefont, + \cftsubsecpagefont + } + { \renewcommand { #1 } { \@@_rm_family: \zihao { -4 } } } +% \end{macrocode} +% \end{variable} +% \begin{macrocode} +% %<*thesis> % \end{macrocode} % \subsection{公式} @@ -3354,8 +4369,10 @@ % \end{macro} % \begin{macro}{\thesubfigure} % \changes{v1.13.5.0}{2022/05/08}{设置\pkgx{subcaption}宏包子图引用样式} +% \changes{v1.20.1.0}{2022/05/30}{修复\pkgx{subcaption}宏包子图标签样式} % 设置\pkgx{subcaption}宏包子图引用样式。 % \begin{macrocode} +\PassOptionsToPackage { labelformat = simple } { subcaption } \ctex_at_end_preamble:n { \@ifpackageloaded { subcaption } @@ -3428,7 +4445,7 @@ % \changes{v1.10.0.0}{2022/05/04}{添加PDF应用程序元数据} % 配置超链接和PDF元数据。 % \begin{macrocode} -\RequirePackage{ hyperref } +\RequirePackage { hyperref } \hypersetup { bookmarksnumbered, @@ -3507,16 +4524,13 @@ { \group_begin: \citestyle { numbers } \cite { #1 } \group_end: } } { + \PassOptionsToPackage { \l_@@_biblatex_option_tl } { biblatex } \RequirePackage { biblatex } \clist_map_inline:Nn \l_@@_bib_file_clist { \addbibresource { #1 } } } } % \end{macrocode} % \end{macro} -% \begin{macrocode} -% -%<*xduugthesis> -% \end{macrocode} % \subsection{附录} % \begin{macro}{appendixes} % 附录环境。 @@ -3543,8 +4557,14 @@ } % \end{macrocode} % \end{macro} -% \subsection{封面} +% \begin{macrocode} +% +%<*xduugthesis> +% \end{macrocode} +% \changes{v1.26.7.1}{2022/06/12}{整理代码结构} +% \subsection{前言部分} % \subsubsection{本科生} +% \paragraph{前言组件} % \begin{macro}{\@@_cover_i:nn} % 绘制班级和学号。 % \begin{arguments} @@ -3632,29 +4652,6 @@ } % \end{macrocode} % \end{macro} -% \begin{macro}{\@@_split_title:Nn,\@@_split_title:Nn} -% 拆分标题。 -% \begin{arguments} -% \item 拆分后标题。 -% \item 拆分前标题。 -% \end{arguments} -% \begin{macrocode} -\cs_new_protected:Npn \@@_split_title:Nn #1#2 - { - \seq_new:N \l_@@_title_seq - \tl_if_in:nnTF { #2 } { \\ } - { - \seq_set_split:Nnn \l_@@_title_seq { \\ } { #2 } - \clist_set_from_seq:NN #1 \l_@@_title_seq - } - { - \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 1 } { 14 } } - \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 15 } { -1 } } - } - } -\cs_generate_variant:Nn \@@_split_title:Nn { NV } -% \end{macrocode} -% \end{macro} % \begin{variable}{\l_@@_is_ent_bool,\l_@@_is_wide_bool} % \changes{v0.8.1.0}{2022/04/12}{封面导师标签标志位} % 是否为校外毕设,是否为宽名称。 @@ -3691,9 +4688,10 @@ } % \end{macrocode} % \end{macro} +% \paragraph{\tn{frontmatter}} % \begin{macro}{\frontmatter} % \changes{v1.9.1.0}{2022/05/04}{修正封面元素位置及尺寸} -% 排版正文前部分。 +% 排版前言部分。 % \begin{macrocode} \renewcommand { \frontmatter } { @@ -3756,9 +4754,10 @@ \@@_cover_iii:nnnn { 校内导师姓名 } { rm } { -3 } { \l_@@_supv_sch_str } } % \end{macrocode} +% \changes{v1.15.1.0}{2022/05/21}{使用\csx{group_begin:}和\csx{group_end:}替换分组} % 校内毕设,排版导师姓名、院内导师姓名。 % \begin{macrocode} - { + \group_begin: \@@_cover_iii:nnnn { 导师姓名 } { rm } { -3 } { \l_@@_supv_str } \tl_if_blank:VF \l_@@_supv_dept_str { @@ -3768,7 +4767,7 @@ { -3 } { \l_@@_supv_dept_str } } - } + \group_end: \cleardoublepage % \end{macrocode} % \changes{v0.8.0.0}{2022/04/12}{支持对称页边距} @@ -3790,24 +4789,24 @@ { 摘 { \quad } 要 } { \@@_sf_family: \zihao { 3 } \centering } } - { + \group_begin: \dim_set:Nn \parindent { 2 \ccwd } \rmfamily \zihao { -4 } \file_if_exist_input:n { \l_@@_abstract_zh_tl } - } + \group_end: % \end{macrocode} % \changes{v1.10.3.0}{2022/05/04}{使用弹性长度分隔关键词} % 关键词弹性分隔间距。 % \begin{macrocode} - \cs_new:Npn \@@_keywords_space: { \hspace{ 2em plus 1em minus 1em } } + \cs_new:Npn \@@_keywords_space: { \hspace { 2em plus 1em minus 1em } } % \end{macrocode} % 中文关键词,黑体小四号。 % \begin{macrocode} - { + \group_begin: \sffamily \zihao { -4 } \par \@@_typeout_keywords:nNn { 关键词: } { \l_@@_keywords_zh_clist } { \@@_keywords_space: } - } + \group_end: \cleardoublepage % \end{macrocode} % 英文摘要,Times New Roman字体,小四号。 @@ -3815,19 +4814,19 @@ % \begin{macrocode} \@@_n_chapter_head_ii:nn { ABSTRACT } { \rmfamily \zihao { 3 } \bfseries \centering } - { + \group_begin: \dim_set:Nn \parindent { 2 \ccwd } \rmfamily \zihao { -4 } \file_if_exist_input:n { \l_@@_abstract_en_tl } - } + \group_end: % \end{macrocode} % 英文关键词,Times New Roman字体加粗,小四号。 % \begin{macrocode} - { + \group_begin: \rmfamily \zihao { -4 } \bfseries \par \@@_typeout_keywords:nNn { Keywords: } { \l_@@_keywords_en_clist } { \@@_keywords_space: } - } + \group_end: \cleardoublepage % \end{macrocode} % \changes{v1.1.4.0}{2022/04/16}{为目录章节标题增加间距} @@ -3848,18 +4847,1147 @@ %<*xdupgthesis> % \end{macrocode} % \subsubsection{研究生} +% \paragraph{封面} +% \begin{variable} +% { +% \l_@@_ac_master, +% \l_@@_pro_master, +% \l_@@_ac_phd, +% \l_@@_pro_phd, +% \l_@@_phd, +% \l_@@_master, +% \l_@@_ac, +% \l_@@_pro +% } +% \changes{v1.16.0.0}{2022/05/22}{研究生类别} +% \changes{v1.17.0.0}{2022/05/28}{增加学术和专业研究生布尔变量} +% \changes{v1.18.0.0}{2022/05/29}{增加硕士和博士研究生布尔变量} +% 研究生类别。 +% \begin{macrocode} +\bool_new:N \l_@@_ac_master +\bool_new:N \l_@@_pro_master +\bool_new:N \l_@@_ac_phd +\bool_new:N \l_@@_pro_phd +\bool_new:N \l_@@_phd +\bool_new:N \l_@@_master +\bool_new:N \l_@@_ac +\bool_new:N \l_@@_pro +\ctex_at_end_preamble:n + { + \tl_if_eq:NnTF \l_@@_gr_type_tl { 硕士 } + { + \bool_set_true:N \l_@@_master + \tl_if_eq:NnTF \l_@@_degree_type_tl { 学术 } + { \bool_set_true:N \l_@@_ac_master } + { \bool_set_true:N \l_@@_pro_master } + } + { + \bool_set_true:N \l_@@_phd + \tl_if_eq:NnTF \l_@@_degree_type_tl { 学术 } + { \bool_set_true:N \l_@@_ac_phd } + { \bool_set_true:N \l_@@_pro_phd } + } + \tl_if_eq:NnTF \l_@@_degree_type_tl { 学术 } + { \bool_set_true:N \l_@@_ac } + { \bool_set_true:N \l_@@_pro } + } +% \end{macrocode} +% \end{variable} +% \begin{macro}{\@@_cover_i:nnnnn} +% \changes{v1.16.0.0}{2022/05/22}{绘制研究生封面单行内容} +% \changes{v1.17.0.0}{2022/05/28}{绘制研究生封面和提名页单行内容} +% 绘制研究生封面和提名页单行内容。 +% \begin{arguments} +% \item 盒子高度。 +% \item 字体族。 +% \item 字号。 +% \item 是否加粗。 +% \item 盒子内容。 +% \end{arguments} +% \begin{macrocode} +\cs_new:Npn \@@_cover_i:nnnnn #1#2#3#4#5 + { + \dim_set:Nn \baselineskip { 20pt } + \vbox_to_ht:nn { #1 } + { + \vfill + \mode_leave_vertical: + \hfil + \use:c { #2 family } \zihao { #3 } + \str_if_eq:nnTF { #4 } { bf } { \bfseries } { } + #5 + \hfil + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_cover_ii:nnnn} +% \changes{v1.16.0.0}{2022/05/22}{绘制研究生封面论文信息} +% \changes{v1.26.4.0}{2022/06/10}{研究生封面论文信息可指定宽度} +% 绘制研究生封面论文信息。 +% \begin{arguments} +% \item 标签宽度。 +% \item 标签名称。 +% \item 盒子宽度。 +% \item 盒子内容。 +% \end{arguments} +% \begin{macrocode} +\cs_new:Npn \@@_cover_ii:nnnn #1#2#3#4 + { + \dim_set:Nn \baselineskip { 20pt } + \vbox_to_ht:nn { 25pt } + { + \vfill + \mode_leave_vertical: + \hfil + \hbox:n + { + \zihao { 4 } \bfseries + \hbox_to_wd:nn { #1 } { \sffamily #2 } + \skip_horizontal:n { 0.5em } + \@@_uline:n + { + \skip_horizontal:n { 9em - #1 } + \hbox_to_wd:nn { #3 } { \hfil \rmfamily #4 \hfil } + } + } + \hfil + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_cover_iii:nnnn} +% \changes{v1.17.0.0}{2022/05/28}{绘制研究生中文提名页顶部信息} +% 绘制研究生中文提名页顶部信息。 +% \begin{arguments} +% \item 标签宽度。 +% \item 标签名称。 +% \item 值宽度。 +% \item 值内容。 +% \end{arguments} +% \begin{macrocode} +\cs_new:Npn \@@_cover_iii:nnnn #1#2#3#4 + { + \dim_set:Nn \baselineskip { 20pt } + \hbox:n + { + \rmfamily \zihao { 5 } \bfseries + \hbox_to_wd:nn { #1 } { #2 } + \skip_horizontal:n { 0.5em } + \@@_uline:n { \hbox_to_wd:nn { #3 } { \hfil #4 \hfil } } + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_en_month:n} +% \changes{v1.18.0.0}{2022/05/29}{英文月份} +% 英文月份。 +% \begin{macrocode} +\cs_new:Npn \@@_en_month:n #1 + { + \str_case:Vn #1 + { + { 1 } { January } + { 2 } { February } + { 3 } { March } + { 4 } { April } + { 5 } { May } + { 6 } { June } + { 7 } { July } + { 8 } { August } + { 9 } { September } + { 10 } { October } + { 11 } { November } + { 12 } { December } + { 01 } { January } + { 02 } { February } + { 03 } { March } + { 04 } { April } + { 05 } { May } + { 06 } { June } + { 07 } { July } + { 08 } { August } + { 09 } { September } + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_zh_today:,\@@_en_today:} +% \changes{v1.17.0.0}{2022/05/28}{中文今日年月} +% \changes{v1.18.0.0}{2022/05/29}{英文今日年月} +% 今日年月。 +% \begin{macrocode} +\cs_new:Npn \@@_zh_today: + { \int_use:N \c_sys_year_int 年 \int_use:N \c_sys_month_int 月 } +\cs_new:Npn \@@_en_today: + { \@@_en_month:n { \c_sys_month_int } ~ \int_use:N \c_sys_year_int } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_split_submit_date:N} +% \changes{v1.17.0.0}{2022/05/28}{拆分提交日期为年和月} +% 拆分提交日期为年和月。 +% \begin{macrocode} +\seq_new:N \l_@@_submit_date_seq +\cs_new:Npn \@@_split_submit_date:N #1 + { + \seq_set_split:NnV \l_@@_submit_date_seq { - } \l_@@_submit_date_str + \clist_set_from_seq:NN #1 \l_@@_submit_date_seq + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_zh_submit_date:} +% \changes{v1.17.0.0}{2022/05/28}{中文提交日期} +% 中文提交日期。 +% \begin{macrocode} +\clist_new:N \l_@@_submit_date_clist +\cs_new:Npn \@@_zh_submit_date: + { + \str_if_empty:NTF \l_@@_submit_date_str + { \@@_zh_today: } + { + \@@_split_submit_date:N \l_@@_submit_date_clist + \clist_item:Nn \l_@@_submit_date_clist { 1 } 年 + \clist_item:Nn \l_@@_submit_date_clist { 2 } 月 + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_en_submit_date:} +% \changes{v1.18.0.0}{2022/05/29}{英文提交日期} +% 英文提交日期。 +% \begin{macrocode} +\str_new:N \l_@@_submit_date_month_str +\cs_new:Npn \@@_en_submit_date: + { + \str_if_empty:NTF \l_@@_submit_date_str + { \@@_en_today: } + { + \@@_split_submit_date:N \l_@@_submit_date_clist + \str_set:Nx \l_@@_submit_date_month_str + { \clist_item:Nn \l_@@_submit_date_clist { 2 } } + \@@_en_month:n { \l_@@_submit_date_month_str } ~ + \clist_item:Nn \l_@@_submit_date_clist { 1 } + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_cover_author_info:} +% \changes{v1.26.4.0}{2022/06/10}{研究生封面底部作者信息} +% 研究生封面底部作者信息。 +% \begin{macrocode} +\cs_new:Npn \@@_cover_author_info: + { +% \end{macrocode} +% 计算作者信息最大宽度。 +% \begin{macrocode} + \rmfamily \zihao { 4 } + \dim_new:N \l_@@_cover_author_info_dim + \dim_set:Nn \l_@@_cover_author_info_dim { 7em } + \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_author_str } + \bool_if:NTF \l_@@_pro_master + { + \@@_str_max_dim:Nn \l_@@_cover_author_info_dim + { \l_@@_supv_str \enskip \l_@@_supv_t_str } + \str_if_empty:NF \l_@@_supv_ii_str + { + \@@_str_max_dim:Nn \l_@@_cover_author_info_dim + { \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str } + } + \@@_str_max_dim:Nn \l_@@_cover_author_info_dim + { \l_@@_supv_ent_str \enskip \l_@@_supv_ent_t_str } + } + { + \@@_str_max_dim:Nn \l_@@_cover_author_info_dim + { \l_@@_supv_str \enskip \l_@@_supv_t_str } + \str_if_empty:NF \l_@@_supv_ii_str + { + \@@_str_max_dim:Nn \l_@@_cover_author_info_dim + { \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str } + } + } + \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_degree_str } + \dim_add:Nn \l_@@_cover_author_info_dim { 3em } +% \end{macrocode} +% 排版封面论文信息。 +% \begin{macrocode} + \@@_cover_ii:nnnn { 4em } { 作者姓名 } + { \l_@@_cover_author_info_dim } + { \l_@@_author_str } + \bool_if:NTF \l_@@_pro_master + { + \@@_cover_ii:nnnn { 9em } { 学校导师姓名、职称 } + { \l_@@_cover_author_info_dim } + { \l_@@_supv_str \enskip \l_@@_supv_t_str } + \str_if_empty:NF \l_@@_supv_ii_str + { + \@@_cover_ii:nnnn { 9em } { } + { \l_@@_cover_author_info_dim } + { \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str } + } + \@@_cover_ii:nnnn { 9em } { 企业导师姓名、职称 } + { \l_@@_cover_author_info_dim } + { \l_@@_supv_ent_str \enskip \l_@@_supv_ent_t_str } + } + { + \@@_cover_ii:nnnn { 9em } { 指导教师姓名、职称 } + { \l_@@_cover_author_info_dim } + { \l_@@_supv_str \enskip \l_@@_supv_t_str } + \str_if_empty:NF \l_@@_supv_ii_str + { + \@@_cover_ii:nnnn { 9em } { } + { \l_@@_cover_author_info_dim } + { \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str } + } + } + \@@_cover_ii:nnnn { 6em } { 申请学位类别 } + { \l_@@_cover_author_info_dim } + { \l_@@_degree_str } + } +% \end{macrocode} +% \end{macro} +% \paragraph{中文提名页} +% \begin{macro}{\@@_zh_title_page_info:} +% \changes{v1.26.7.0}{2022/06/11}{拆分研究生中文提名页底部信息} +% 中文提名页底部信息。 +% \begin{macrocode} +\cs_new:Npn \@@_zh_title_page_info: + { +% \end{macrocode} +% \changes{v1.26.6.0}{2022/06/11}{研究生中文提名页底部信息宽度测量} +% 底部信息宽度测量。 +% \begin{macrocode} + \rmfamily \zihao { 4 } + \dim_new:N \l_@@_zh_title_page_info_dim + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 作者姓名:\l_@@_author_str } + \bool_if:NTF \l_@@_ac + { + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 一级学科:\l_@@_major_str } + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 二级学科(研究方向):\l_@@_sub_major_str } + } + { + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 领\qquad{}域:\l_@@_domain_str } + } + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 学位类别:\l_@@_degree_str } + \bool_if:NTF \l_@@_pro_master + { + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 学校导师姓名、职称:\l_@@_supv_str \enskip \l_@@_supv_t_str } + \str_if_empty:NF \l_@@_supv_ii_str + { + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 学校导师姓名、职称:\l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str } + } + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 企业导师姓名、职称:\l_@@_supv_ent_str \enskip \l_@@_supv_ent_t_str } + } + { + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 指导教师姓名、职称:\l_@@_supv_str \enskip \l_@@_supv_t_str } + \str_if_empty:NF \l_@@_supv_ii_str + { + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 指导教师姓名、职称:\l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str } + } + } + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 学\qquad{}院:\l_@@_dept_str } + \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim + { 提交日期:\@@_zh_submit_date: } +% \end{macrocode} +% \changes{v1.26.6.0}{2022/06/11}{研究生中文提名页底部信息自动居中} +% \changes{v1.26.10.0}{2022/06/17}{修正中文提名页底部信息字体系列} +% 底部信息。 +% \begin{macrocode} + \dim_new:N \l_@@_zh_title_page_info_skip_dim + \dim_set_eq:NN \l_@@_zh_title_page_info_skip_dim \linewidth + \dim_sub:Nn \l_@@_zh_title_page_info_skip_dim { \l_@@_zh_title_page_info_dim } + \skip_horizontal:n { \dim_eval:n { \l_@@_zh_title_page_info_skip_dim / 2 } } + \vbox:n + { + \rmfamily \zihao { 4 } + \dim_set:Nn \baselineskip { 32pt } + { \bfseries 作者姓名: } \l_@@_author_str + \bool_if:NTF \l_@@_ac + { + \par + { \bfseries 一级学科: } \l_@@_major_str + \par + { \bfseries 二级学科(研究方向): } \l_@@_sub_major_str + } + { + \par + { \bfseries 领\qquad{}域: } \l_@@_domain_str + } + \par + { \bfseries 学位类别: } \l_@@_degree_str + \bool_if:NTF \l_@@_pro_master + { + \par + { \bfseries 学校导师姓名、职称: } + \l_@@_supv_str \enskip \l_@@_supv_t_str + \str_if_empty:NF \l_@@_supv_ii_str + { + \par + \phantom { 学校导师姓名、职称: } + \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str + } + \par + { \bfseries 企业导师姓名、职称: } + \l_@@_supv_ent_str \enskip \l_@@_supv_ent_t_str + } + { + \par + { \bfseries 指导教师姓名、职称: } + \l_@@_supv_str \enskip \l_@@_supv_t_str + \str_if_empty:NF \l_@@_supv_ii_str + { + \par + \phantom { 指导教师姓名、职称: } + \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str + } + } + \par + { \bfseries 学\qquad{}院: } \l_@@_dept_str + \par + { \bfseries 提交日期: } \@@_zh_submit_date: + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_zh_title_page:} +% \changes{v1.17.0.0}{2022/05/28}{中文提名页} +% 中文提名页。 +% \begin{macrocode} +\cs_new:Npn \@@_zh_title_page: + { +% \end{macrocode} +% 顶部信息。 +% \begin{macrocode} + \vbox:n { } + \skip_vertical:n { -7.5pt } + \dim_set:Nn \baselineskip { 15.6bp } + \vbox:n + { + \mode_leave_vertical: + \@@_cover_iii:nnnn { 4em } { 学校代码 } { 7em } { 10701 } + \hfill + \@@_cover_iii:nnnn { 3em } { 学号 } { 7em } { \l_@@_student_id_str } + } + \vbox:n + { + \mode_leave_vertical: + \@@_cover_iii:nnnn { 4em } { 分类号 } { 7em } { \l_@@_clc_str } + \hfill + \@@_cover_iii:nnnn { 3em } { 密级 } { 7em } { \l_@@_secret_lv_str } + } +% \end{macrocode} +% 学校名称和论文类型。 +% \begin{macrocode} + \@@_cover_i:nnnnn { 100pt } { sf } { 1 } { bf } { 西安电子科技大学 } + \@@_cover_i:nnnnn { 85pt } { rm } { -1 } { bf } { \l_@@_gr_type_tl 学位论文 } +% \end{macrocode} +% \changes{v1.18.1.0}{2022/05/30}{不拆分研究生中文提名页标题} +% 论文标题。 +% \begin{macrocode} + \skip_vertical:n { 87.5pt } + \vbox_to_ht:nn { 150pt } + { + \rmfamily \zihao { 2 } \bfseries \centering + \dim_set:Nn \baselineskip { 30pt } + \l_@@_title_str + } +% \end{macrocode} +% 底部信息。 +% \begin{macrocode} + \group_begin: + \@@_zh_title_page_info: + \group_end: + \cleardoublepage + } +% \end{macrocode} +% \end{macro} +% \paragraph{中文提名页} +% \begin{macro}{\@@_en_title_supv:n} +% \changes{v1.18.0.0}{2022/05/29}{英文提名页底部导师姓名拼音盒子} +% 英文提名页底部导师姓名拼音盒子。 +% \begin{macrocode} +\dim_new:N \l_@@_supv_dim +\dim_new:N \l_@@_supv_max_dim +\box_new:N \l_@@_supv_box +\cs_new:Npn \@@_en_title_supv:n #1 + { + \rmfamily \zihao { 3 } + \dim_zero:N \l_@@_supv_max_dim + \hbox_set:Nn \l_@@_supv_box { \l_@@_supv_en_str } + \dim_set:Nn \l_@@_supv_dim { \box_wd:N \l_@@_supv_box } + \dim_set:Nn \l_@@_supv_max_dim + { \dim_max:nn { \l_@@_supv_dim } { \l_@@_supv_max_dim } } + \str_if_empty:NF \l_@@_supv_ii_str + { + \hbox_set:Nn \l_@@_supv_box { \l_@@_supv_ii_en_str } + \dim_set:Nn \l_@@_supv_dim { \box_wd:N \l_@@_supv_box } + \dim_set:Nn \l_@@_supv_max_dim + { \dim_max:nn { \l_@@_supv_dim } { \l_@@_supv_max_dim } } + } + \bool_if:NT \l_@@_pro_master + { + \hbox_set:Nn \l_@@_supv_box { \l_@@_supv_ent_en_str } + \dim_set:Nn \l_@@_supv_dim { \box_wd:N \l_@@_supv_box } + \dim_set:Nn \l_@@_supv_max_dim + { \dim_max:nn { \l_@@_supv_dim } { \l_@@_supv_max_dim } } + } + \hbox_to_wd:nn { \l_@@_supv_max_dim } { #1 \hfil } \quad + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_en_title_supv_t:n} +% \changes{v1.18.0.0}{2022/05/29}{英文提名页底部导师英文职称盒子} +% 英文提名页底部导师英文职称盒子。 +% \begin{macrocode} +\dim_new:N \l_@@_supv_t_dim +\dim_new:N \l_@@_supv_t_max_dim +\box_new:N \l_@@_supv_t_box +\cs_new:Npn \@@_en_title_supv_t:n #1 + { + \rmfamily \zihao { 3 } + \dim_zero:N \l_@@_supv_t_max_dim + \hbox_set:Nn \l_@@_supv_t_box { \l_@@_supv_t_en_str } + \dim_set:Nn \l_@@_supv_t_dim { \box_wd:N \l_@@_supv_t_box } + \dim_set:Nn \l_@@_supv_t_max_dim + { \dim_max:nn { \l_@@_supv_t_dim } { \l_@@_supv_t_max_dim } } + \str_if_empty:NF \l_@@_supv_ii_str + { + \hbox_set:Nn \l_@@_supv_t_box { \l_@@_supv_ii_t_en_str } + \dim_set:Nn \l_@@_supv_t_dim { \box_wd:N \l_@@_supv_t_box } + \dim_set:Nn \l_@@_supv_t_max_dim + { \dim_max:nn { \l_@@_supv_t_dim } { \l_@@_supv_t_max_dim } } + } + \bool_if:NT \l_@@_pro_master + { + \hbox_set:Nn \l_@@_supv_t_box { \l_@@_supv_ent_t_en_str } + \dim_set:Nn \l_@@_supv_t_dim { \box_wd:N \l_@@_supv_t_box } + \dim_set:Nn \l_@@_supv_t_max_dim + { \dim_max:nn { \l_@@_supv_t_dim } { \l_@@_supv_t_max_dim } } + } + \hbox_to_wd:nn { \l_@@_supv_t_max_dim } { #1 \hfil } \quad + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_en_title_page:} +% \changes{v1.18.0.0}{2022/05/29}{英文提名页} +% \changes{v1.26.1.0}{2022/06/07}{修复作者拼音为空无法编译} +% \changes{v1.26.11.0}{2022/06/17}{修复非专业硕士英文提名页英文一级学科} +% 英文提名页。 +% \begin{macrocode} +\cs_new:Npn \@@_en_title_page: + { + \vbox:n { } + \skip_vertical:n { -3.5pt } + \dim_set:Nn \baselineskip { 30pt } + \vbox_to_ht:nn { 170pt } + { + \rmfamily \zihao { 2 } \bfseries \centering + \dim_set:Nn \baselineskip { 30pt } + \l_@@_title_en_str + } + \vbox_to_ht:nn { 360pt } + { + \rmfamily \zihao { 3 } \centering + \dim_set:Nn \baselineskip { 30pt } + A + \bool_if:NTF \l_@@_master { ~thesis~ } { ~dissertation~ } + submitted~to\\ + XIDIAN~UNIVERSITY\\ + in~partial~fulfillment~of~the~requirements\\ + for~the~degree~of + \bool_if:NTF \l_@@_master { ~Master\\ } { ~Doctor~of~Philosophy\\ } + in + \bool_if:NTF \l_@@_pro_master + { ~\l_@@_degree_en_str\\ } + { ~\l_@@_major_en_str\\ } + } + \vbox:n + { + \rmfamily \zihao { 3 } \centering + \dim_set:Nn \baselineskip { 30pt } + By\\ + \l_@@_author_en_str + \str_if_empty:NTF \l_@@_author_en_str + { \skip_vertical:N \baselineskip } + { \\ } + Supervisor:~\@@_en_title_supv:n { \l_@@_supv_en_str } + Title:~\@@_en_title_supv_t:n { \l_@@_supv_t_en_str } \\ + \str_if_empty:NF \l_@@_supv_ii_str + { + \phantom { Supervisor:~ } \@@_en_title_supv:n { \l_@@_supv_ii_en_str } + \phantom { Title:~ } \@@_en_title_supv_t:n { \l_@@_supv_ii_t_en_str } \\ + } + \bool_if:NT \l_@@_pro_master + { + Supervisor:~ \@@_en_title_supv:n { \l_@@_supv_ent_en_str } + Title:~ \@@_en_title_supv_t:n { \l_@@_supv_ent_t_en_str } \\ + } + \@@_en_submit_date: + } + \cleardoublepage + } +% \end{macrocode} +% \end{macro} +% \paragraph{声明页} +% \begin{macro}{\@@_statement:} +% \changes{v1.19.0.0}{2022/05/30}{学位论文独创性声明和关于论文使用授权的说明} +% 学位论文独创性声明和关于论文使用授权的说明。 +% \begin{macrocode} +\cs_new:Npn \@@_statement: + { + \vbox:n { } + \skip_vertical:n { -7.5pt } + \vbox_to_ht:nn { 60pt } + { + \rmfamily \zihao { 4 } \bfseries \centering + \dim_set:Nn \baselineskip { 20pt } + 西安电子科技大学\\ + 学位论文独创性(或创新性)声明 + } + \vbox_to_ht:nn { 140pt } + { + \rmfamily \zihao { -4 } + \dim_set:Nn \parindent { 2em } + \dim_set:Nn \baselineskip { 20pt } + 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在导师指 + 导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢 + 中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;也不包 + 含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一 + 同工作的同事对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 + \par + 学位论文若有不实之处,本人承担一切法律责任。 + \vfil + } + \vbox_to_ht:nn { 175pt } + { + \rmfamily \zihao { -4 } + \dim_set:Nn \parindent { 2em } + \dim_set:Nn \baselineskip { 20pt } + 本人签名:\@@_uline:n { \skip_horizontal:n { 10em } } + \hfill + 日\qquad{}期:\@@_uline:n { \skip_horizontal:n { 10em } } + } + \vbox_to_ht:nn { 60pt } + { + \rmfamily \zihao { 4 } \bfseries \centering + \dim_set:Nn \baselineskip { 20pt } + 西安电子科技大学\\ + 关于论文使用授权的说明 + } + \vbox_to_ht:nn { 140pt } + { + \rmfamily \zihao { -4 } + \dim_set:Nn \parindent { 2em } + \dim_set:Nn \baselineskip { 20pt } + 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生在校 + 攻读学位期间论文工作的知识产权属于西安电子科技大学。学校有权保留送交论文 + 的复印件,允许查阅、借阅论文;学校可以公布论文的全部或部分内容,允许采用 + 影印、缩印或其它复制手段保存论文。同时本人保证,结合学位论文研究成果完成 + 的论文、发明专利等成果,署名单位为西安电子科技大学。 + \par + 保密的学位论文在 + \str_if_eq:NNTF \l_@@_secret_lv_str { 秘密 } + { + \str_if_empty:NTF \l_@@_secret_year_str + { \@@_uline:n { \skip_horizontal:n { 1.5em } } } + { \@@_uline:n { \enskip \l_@@_secret_year_str \enskip } } + } + { \@@_uline:n { \skip_horizontal:n { 1.5em } } } + 年解密后适用本授权书。 + \vfil + } + \vbox:n + { + \rmfamily \zihao { -4 } + \dim_set:Nn \parindent { 2em } + \dim_set:Nn \baselineskip { 40pt } + 本人签名:\@@_uline:n { \skip_horizontal:n { 10em } } + \hfill + 导师签名:\@@_uline:n { \skip_horizontal:n { 10em } } + \par + 日\qquad{}期:\@@_uline:n { \skip_horizontal:n { 10em } } + \hfill + 日\qquad{}期:\@@_uline:n { \skip_horizontal:n { 10em } } + } + \cleardoublepage + } +% \end{macrocode} +% \end{macro} +% \paragraph{中英文摘要} +% \begin{macro}{\@@_zh_abstract_keywords:} +% \changes{v1.20.0.0}{2022/05/30}{中文摘要和关键词} +% \changes{v1.28.1.0}{2022/06/18}{添加中文摘要至目录} +% \changes{v1.28.2.0}{2022/06/18}{修正英文语言下中文摘要标题样式} +% 中文摘要和关键词。 +% \begin{macrocode} +\cs_new:Npn \@@_zh_abstract_keywords: + { +% \end{macrocode} +% 中文摘要。 +% \begin{macrocode} + \@@_n_chapter_head_toc:nn { 摘要 } { 摘 { \quad } 要 } + \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 摘要 } } + \group_begin: + \dim_set:Nn \parindent { 2 \ccwd } + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \file_if_exist_input:n { \l_@@_abstract_zh_tl } + \group_end: +% \end{macrocode} +% 中文关键词。 +% \begin{macrocode} + \group_begin: + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \skip_vertical:n { 20pt } + \@@_typeout_keywords:nNn + { \textbf { 关键词 } : } { \l_@@_keywords_zh_clist } { , } + \group_end: + \cleardoublepage + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_en_abstract_keywords:} +% \changes{v1.20.0.0}{2022/05/30}{英文摘要和关键词} +% \changes{v1.28.1.0}{2022/06/18}{添加英文摘要至目录} +% \changes{v1.28.2.0}{2022/06/18}{修正英文摘要标题样式} +% \changes{v1.28.3.0}{2022/06/18}{修正目录中英文摘要标题样式} +% 英文摘要和关键词。 +% \begin{macrocode} +\cs_new:Npn \@@_en_abstract_keywords: + { +% \end{macrocode} +% 英文摘要。 +% \begin{macrocode} + \@@_n_chapter_head_toc_ii:nn + { \textrm { ABSTRACT } } { \centering \rmfamily \zihao { 3 } \dim_set:Nn \baselineskip { 20pt } } + \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { \textrm { ABSTRACT } } } + \group_begin: + \dim_set:Nn \parskip { 20pt } + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \file_if_exist:nT { \l_@@_abstract_en_tl } { \skip_vertical:n { -20pt } } + \file_if_exist_input:n { \l_@@_abstract_en_tl } + \group_end: +% \end{macrocode} +% 英文关键词。 +% \begin{macrocode} + \group_begin: + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \skip_vertical:n { 20pt } + \@@_typeout_keywords:nNn + { \textbf { Keywords } : } { \l_@@_keywords_en_clist } { ,~ } + \group_end: + \cleardoublepage + } +% \end{macrocode} +% \end{macro} +% \paragraph{图表索引} +% \begin{macro}{\@@_loft_label_num_width:nN} +% \changes{v1.21.0.0}{2022/06/01}{计算图表索引编号标签最大宽度} +% 计算图表索引编号标签最大宽度。 +% \begin{macrocode} +\cs_new:Npn \@@_loft_label_num_width:nN #1#2 + { +% \end{macrocode} +% 读取索引文件。 +% \begin{macrocode} + \tl_clear_new:N \l_@@_loft_tl + \file_get:nnN + { \jobname.#1 } + { \let\do\@makeother \dospecials } + \l_@@_loft_tl +% \end{macrocode} +% 使用正则表达式匹配索引编号。 +% \begin{macrocode} + \seq_clear_new:N \l_@@_loft_label_num_seq + \cs_generate_variant:Nn \regex_extract_all:nnN { nVN } + \str_if_eq:nnTF { #1 } { lof } + { + \regex_extract_all:nVN + { \\contentsline\ \{figure\}\{\\numberline\ \{\K[0-9A-Z\.]+ } + \l_@@_loft_tl \l_@@_loft_label_num_seq + } + { + \regex_extract_all:nVN + { \\contentsline\ \{table\}\{\\numberline\ \{\K[0-9A-Z\.]+ } + \l_@@_loft_tl \l_@@_loft_label_num_seq + } +% \end{macrocode} +% 计算所有索引编号的最大宽度。 +% \begin{macrocode} + \dim_zero_new:N \l_@@_loft_label_num_dim + \seq_map_inline:Nn \l_@@_loft_label_num_seq + { + \@@_get_text_width:Nn \l_@@_loft_label_num_dim { ##1 } + \dim_set:Nn #2 { \dim_max:nn { \l_@@_loft_label_num_dim } { #2 } } + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_list_of_figure:} +% \changes{v1.21.0.0}{2022/05/31}{插图索引} +% \changes{v1.28.1.0}{2022/06/18}{添加插图索引至目录} +% \changes{v1.29.3.0}{2022/06/19}{修正插图索引字号} +% 插图索引。 +% \begin{macrocode} +\cs_new:Npn \@@_list_of_figure: + { + \@@_n_chapter_head_toc:n + { \@@_lang_switch:nn { 插图索引 } { List~of~Figures } } + \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 插图索引 } } + \group_begin: + \addtocontents { lof } { \vspace { 10pt } } + \renewcommand { \addvspace } [1] { } +% \end{macrocode} +% 配置文本标签及宽度。 +% \begin{macrocode} + \tl_set:Nn \cftfigpresnum { \figurename \space } + \dim_zero_new:N \l_@@_lof_label_dim + \@@_get_text_width:NV \l_@@_lof_label_dim \cftfigpresnum + \dim_set:Nn \cftfignumwidth { \l_@@_lof_label_dim } +% \end{macrocode} +% 配置索引编号标签宽度。 +% \begin{macrocode} + \dim_new:N \l_@@_lof_label_num_max_dim + \@@_loft_label_num_width:nN { lof } \l_@@_lof_label_num_max_dim + \dim_add:Nn \cftfignumwidth { \l_@@_lof_label_num_max_dim } + \dim_add:Nn \cftfignumwidth { .75em } + \dim_set:Nn \cftfigindent { 0pt } +% \end{macrocode} +% 排版索引表。 +% \begin{macrocode} + \rmfamily \zihao { -4 } \dim_set:Nn \baselineskip { 20pt } + \@starttoc { lof } + \group_end: + \cleardoublepage + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_list_of_table:} +% \changes{v1.21.0.0}{2022/05/31}{表格索引} +% \changes{v1.28.1.0}{2022/06/18}{添加表格索引至目录} +% \changes{v1.29.3.0}{2022/06/19}{修正表格索引字号} +% 表格索引。 +% \begin{macrocode} +\cs_new:Npn \@@_list_of_table: + { + \@@_n_chapter_head_toc:n + { \@@_lang_switch:nn { 表格索引 } { List~of~Tables } } + \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 表格索引 } } + \group_begin: + \addtocontents { lot } { \vspace { 10pt } } + \renewcommand { \addvspace } [1] { } +% \end{macrocode} +% 配置文本标签及宽度。 +% \begin{macrocode} + \tl_set:Nn \cfttabpresnum { \tablename \space } + \dim_zero_new:N \l_@@_lot_label_dim + \@@_get_text_width:NV \l_@@_lot_label_dim \cfttabpresnum + \dim_set:Nn \cfttabnumwidth { \l_@@_lot_label_dim } +% \end{macrocode} +% 配置索引编号标签宽度。 +% \begin{macrocode} + \dim_new:N \l_@@_lot_label_num_max_dim + \@@_loft_label_num_width:nN { lot } \l_@@_lot_label_num_max_dim + \dim_add:Nn \cfttabnumwidth { \l_@@_lot_label_num_max_dim } + \dim_add:Nn \cfttabnumwidth { .75em } + \dim_set:Nn \cfttabindent { 0pt } +% \end{macrocode} +% 排版索引表。 +% \begin{macrocode} + \rmfamily \zihao { -4 } \dim_set:Nn \baselineskip { 20pt } + \@starttoc { lot } + \group_end: + \cleardoublepage + } +% \end{macrocode} +% \end{macro} +% \paragraph{对照表} +% \begin{macro}{\UseTblrLibrary,\NewTblrTheme} +% \changes{v1.22.0.0}{2022/06/05}{对照表样式} +% 对照表样式。 +% \begin{macrocode} +\ctex_at_end_preamble:n + { + \bool_new:N \l_@@_load_tabularray_bool + \bool_if:NF \l_@@_customize_los_bool + { \bool_set_true:N \l_@@_load_tabularray_bool } + \bool_if:NF \l_@@_customize_loa_bool + { \bool_set_true:N \l_@@_load_tabularray_bool } + \bool_if:NT \l_@@_load_tabularray_bool + { + \RequirePackage { tabularray } + \UseTblrLibrary { functional } + \NewTblrTheme { losloatheme } + { + \DefTblrTemplate { caption-tag } { default } { } + \DefTblrTemplate { caption-sep } { default } { } + \DefTblrTemplate { caption-text } { default } { } + \DefTblrTemplate { conthead-text } { default } { } + \DefTblrTemplate { contfoot-text } { default } { } + } + } + \cs_generate_variant:Nn \__tblr_parse_colrow_spec:nn { nV } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_symbols_list:} +% \changes{v1.22.0.0}{2022/06/05}{符号对照表} +% \changes{v1.26.2.0}{2022/06/09}{修复符号对照表列格式解析错误} +% \changes{v1.26.3.0}{2022/06/09}{修复符号对照表文件导入接口} +% \changes{v1.26.5.0}{2022/06/10}{修复符号对照表空文件标题行错误} +% \changes{v1.28.1.0}{2022/06/18}{添加符号对照表至目录} +% \changes{v1.29.1.0}{2022/06/19}{修复符号对照表引起的章节段前段后间距错误} +% 符号对照表。 +% \begin{macrocode} +\cs_new:Npn \@@_symbols_list: + { + \@@_n_chapter_head_toc:n + { \@@_lang_switch:nn { 符号对照表 } { List~of~Symbols } } + \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 符号对照表 } } +% \end{macrocode} +% 是否完全自定义符号对照表。 +% \begin{macrocode} + \bool_if:NTF \l_@@_customize_los_bool + { \file_if_exist_input:n { \l_@@_los_str } } + { +% \end{macrocode} +% 配置符号对照表标题行。 +% \begin{macrocode} + \tl_new:N \l_@@_los_head_tl + \@@_lang_switch:nn + { \tl_set:Nn \l_@@_los_head_tl { 符号 & 符号名称 \\ } } + { \tl_set:Nn \l_@@_los_head_tl { Notation & Description \\ } } +% \end{macrocode} +% 是否每页均显示符号对照表标题行。 +% \begin{macrocode} + \tl_new:N \l_@@_los_rowhead_tl + \bool_if:NTF \l_@@_title_row_los_bool + { \tl_set:Nn \l_@@_los_rowhead_tl { 1 } } + { \tl_set:Nn \l_@@_los_rowhead_tl { 0 } } +% \end{macrocode} +% 使用\envx{longtblr}环境排版符号对照表。 +% \begin{macrocode} + \tl_new:N \l_@@_los_begin_tblr_tl + \tl_set:Nx \l_@@_los_begin_tblr_tl + { + \exp_not:n + { + \begin { longtblr } + [ + evaluate = \fileIfExistInput, + expand = \l_@@_los_head_tl, + theme = losloatheme + ] + } + { + colspec = { \exp_not:V \l_@@_colspec_los_tl }, + \exp_not:n + { + rowhead = \int_compare:nNnTF + { \value { rowcount } } > { 1 } + { \l_@@_los_rowhead_tl } { 0 }, + rows = { font = \rmfamily \zihao { -4 } }, + stretch = 0, + rowsep = { 3pt }, + rows = { ht = 14pt } + } + } + } + \tl_use:N \l_@@_los_begin_tblr_tl + \l_@@_los_head_tl + \fileIfExistInput { \l_@@_los_str } + \end { longtblr } + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_abbreviations_list:} +% \changes{v1.22.0.0}{2022/06/05}{缩略语对照表} +% \changes{v1.26.2.0}{2022/06/09}{修复缩略语对照表列格式解析错误} +% \changes{v1.26.3.0}{2022/06/09}{修复缩略语对照表文件导入接口} +% \changes{v1.26.5.0}{2022/06/10}{修复缩略语对照表空文件标题行错误} +% \changes{v1.28.1.0}{2022/06/18}{添加缩略语对照表至目录} +% \changes{v1.29.1.0}{2022/06/19}{修复缩略语对照表引起的章节段前段后间距错误} +% 缩略语对照表。 +% \begin{macrocode} +\cs_new:Npn \@@_abbreviations_list: + { + \@@_n_chapter_head_toc:n + { \@@_lang_switch:nn { 缩略语对照表 } { List~of~Abbreviations } } + \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 缩略语对照表 } } +% \end{macrocode} +% 是否完全自定义缩略语对照表。 +% \begin{macrocode} + \bool_if:NTF \l_@@_customize_loa_bool + { \file_if_exist_input:n { \l_@@_loa_str } } + { +% \end{macrocode} +% 配置缩略语对照表标题行。 +% \begin{macrocode} + \tl_new:N \l_@@_loa_head_tl + \@@_lang_switch:nn + { + \tl_set:Nn \l_@@_loa_head_tl + { 缩略语 & 英文全称 & 中文对照 \\ } + } + { + \tl_set:Nn \l_@@_loa_head_tl + { Abbreviation & English~Full~Name & Chinese~Full~Name \\ } + } +% \end{macrocode} +% 是否每页均显示缩略语对照表标题行。 +% \begin{macrocode} + \tl_new:N \l_@@_loa_rowhead_tl + \bool_if:NTF \l_@@_title_row_loa_bool + { \tl_set:Nn \l_@@_loa_rowhead_tl { 1 } } + { \tl_set:Nn \l_@@_loa_rowhead_tl { 0 } } +% \end{macrocode} +% 使用\envx{longtblr}环境排版缩略语对照表。 +% \begin{macrocode} + \tl_new:N \l_@@_loa_begin_tblr_tl + \tl_set:Nx \l_@@_loa_begin_tblr_tl + { + \exp_not:n + { + \begin { longtblr } + [ + evaluate = \fileIfExistInput, + expand = \l_@@_loa_head_tl, + theme = losloatheme + ] + } + { + colspec = { \exp_not:V \l_@@_colspec_loa_tl }, + \exp_not:n + { + rowhead = \int_compare:nNnTF + { \value { rowcount } } > { 1 } + { \l_@@_loa_rowhead_tl } { 0 }, + rows = { font = \rmfamily \zihao { -4 } }, + stretch = 0, + rowsep = { 3pt }, + rows = { ht = 14pt } + } + } + } + \tl_use:N \l_@@_loa_begin_tblr_tl + \l_@@_loa_head_tl + \fileIfExistInput { \l_@@_loa_str } + \end { longtblr } + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_add_zh_toc:nn} +% \changes{v1.30.0.0}{2022/06/20}{添加章节至中文目录} +% \begin{macrocode} +\cs_new:Npn \@@_add_zh_toc:nn #1#2 + { + \str_if_eq:NNTF { #1 } { chapter } + { \phantomsection \addcontentsline { zh.toc } { #1 } { \@@_sf_family: #2 } } + { \phantomsection \addcontentsline { zh.toc } { #1 } { #2 } } + } +% \end{macrocode} +% \end{macro} +% \paragraph{\tn{frontmatter}} % \begin{macro}{\frontmatter} % \changes{v1.5.0.0}{2022/05/01}{设置封面页边距} % \changes{v1.6.0.0}{2022/05/02}{设置页脚页码} -% 排版正文前部分。 +% \changes{v1.16.0.0}{2022/05/22}{绘制研究生封面} +% 排版前言部分。 % \begin{macrocode} \renewcommand { \frontmatter } { \loadgeometry { cover } \pagestyle { empty } + \dim_set:Nn \parindent { 0pt } + \dim_set:Nn \baselineskip { 20pt } + \@@_add_bookmark:n { \@@_lang_switch:nn { 封面 } { Cover } } +% \end{macrocode} +% \changes{v1.18.1.0}{2022/05/30}{不拆分研究生封面标题} +% 封面标题。 +% \begin{macrocode} + \vbox:n { } + \skip_vertical:n { 435pt } + \vbox_to_ht:nn { 120pt } + { + \rmfamily \zihao { 2 } \bfseries \centering + \dim_set:Nn \baselineskip { 30pt } + \l_@@_title_str + } +% \end{macrocode} +% 封面底部作者信息。 +% \begin{macrocode} + \@@_cover_author_info: + \cleardoublepage +% \end{macrocode} +% 中英文提名页。 +% \begin{macrocode} + \@@_lang_switch:nn + { \@@_zh_title_page: \@@_en_title_page: } + { \@@_en_title_page: \@@_zh_title_page: } +% \end{macrocode} +% 声明页。 +% \begin{macrocode} + \@@_statement: +% \end{macrocode} +% 更改页面样式。 +% \begin{macrocode} \@@_load_main_geometry: \pagestyle { front } \pagenumbering { Roman } + \dim_set:Nn \baselineskip { 20pt } +% \end{macrocode} +% 中英文摘要。 +% \begin{macrocode} + \@@_lang_switch:nn + { \@@_zh_abstract_keywords: \@@_en_abstract_keywords: } + { \@@_en_abstract_keywords: \@@_zh_abstract_keywords: } +% \end{macrocode} +% 图表索引。 +% \begin{macrocode} + \@@_list_of_figure: + \@@_list_of_table: +% \end{macrocode} +% 符号对照表和缩略语对照表。 +% \begin{macrocode} + \@@_symbols_list: + \@@_abbreviations_list: +% \end{macrocode} +% \changes{v1.23.0.0}{2022/06/05}{研究生学位论文目录} +% \changes{v1.28.0.0}{2022/06/18}{设置研究生学位论文目录深度} +% 目录。 +% \begin{macrocode} + \setcounter { tocdepth } { 2 } + \@@_n_chapter_head:nn + { \@@_lang_switch:nn { 目录 } { Contents } } + { \@@_lang_switch:nn { 目 { \quad } 录 } { Contents } } + \@starttoc { toc } + \cleardoublepage +% \end{macrocode} +% \changes{v1.30.0.0}{2022/06/20}{英文研究生学位论文中文目录} +% 英文研究生学位论文中文目录。 +% \begin{macrocode} + \@@_lang_switch:nn { } + { + \setcounter { tocdepth } { 2 } + \@@_n_chapter_head:nn { 目录 } { \@@_sf_family: 目 { \quad } 录 } + \@starttoc { zh.toc } + \cleardoublepage + } } % \end{macrocode} % \end{macro} @@ -3867,7 +5995,7 @@ % %<*xduugthesis> % \end{macrocode} -% \subsection{正文} +% \subsection{正文部分} % \subsubsection{本科生} % \begin{macro}{\mainmatter} % \changes{v0.8.0.0}{2022/04/12}{支持对称页边距} @@ -3883,8 +6011,62 @@ } % \end{macrocode} % \end{macro} +% \begin{macrocode} +% +%<*xdupgthesis> +% \end{macrocode} +% \subsubsection{研究生} +% \begin{macro}{\mainmatter} +% \changes{v1.5.0.0}{2022/05/01}{设置正文页边距} +% \changes{v1.6.0.0}{2022/05/02}{设置页脚页码} +% \changes{v1.23.1.0}{2022/06/05}{设置正文字号和行间距} +% 排版正文部分。 +% \begin{macrocode} +\renewcommand { \mainmatter } + { + \@@_load_main_geometry: + \pagestyle { plain } + \pagenumbering { arabic } + \dim_set:Nn \parindent { 2 \ccwd } + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } +% \end{macrocode} +% \changes{v1.30.0.0}{2022/06/20}{英文研究生学位论文目录中正文一二三级中英双语标题} +% 英文研究生学位论文目录中正文一二三级中英双语标题。 +% \begin{macrocode} + \@@_lang_switch:nn { } + { + \cs_new_eq:NN \@@_org_chapter:n \chapter + \RenewDocumentCommand { \chapter } { m m } + { + \@@_org_chapter:n { ##1 } + \@@_add_zh_toc:nn { chapter } + { \numberline { 第 \chinese { chapter } 章 \hspace { .3em } } ##2 } + } + \cs_new_eq:NN \@@_org_section:n \section + \RenewDocumentCommand { \section } { m m } + { + \@@_org_section:n { ##1 } + \@@_add_zh_toc:nn { section } { \numberline { \thesection } ##2 } + } + \cs_new_eq:NN \@@_org_subsection:n \subsection + \RenewDocumentCommand { \subsection } { m m } + { + \@@_org_subsection:n { ##1 } + \@@_add_zh_toc:nn { subsection } { \numberline { \thesubsection } ##2 } + } + } + } +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +% +%<*xduugthesis> +% \end{macrocode} +% \subsection{后记部分} +% \subsubsection{本科生} % \begin{macro}{\backmatter} -% 排版正文后部分。 +% 排版后记部分。 % \begin{macrocode} \renewcommand { \backmatter } { @@ -3895,11 +6077,11 @@ \@@_n_chapter_head_toc:nn { \@@_lang_switch:nn { 致谢 } { Acknowledgements } } { \@@_lang_switch:nn { 致 { \quad } 谢 } { Acknowledgements } } - { + \group_begin: \dim_set:Nn \parindent { 2 \ccwd } \rmfamily \zihao { -4 } \file_if_exist_input:n { \l_@@_ack_tl } - } + \group_end: % \end{macrocode} % 参考文献。 % \changes{v0.2.1.0}{2022/04/04}{参考文献添加至目录} @@ -3909,7 +6091,7 @@ % \begin{macrocode} \cs_set:Npn \bibname { \@@_lang_switch:nn { 参考文献 } { Bibliography } } \@@_n_chapter_head_toc:n { \bibname } - { + \group_begin: \tl_if_eq:NnTF \l_@@_bib_tool_tl { bibtex } { \cs_set:Npn \bibsection { } @@ -3921,27 +6103,154 @@ \cs_set:Npn \bibfont { \@@_rm_family: \zihao { 5 } } \printbibliography } - } + \group_end: } % \end{macrocode} % \end{macro} % \begin{macrocode} % -% \end{macrocode} -% \begin{macrocode} %<*xdupgthesis> % \end{macrocode} % \subsubsection{研究生} -% \begin{macro}{\mainmatter} -% \changes{v1.5.0.0}{2022/05/01}{设置正文页边距} -% \changes{v1.6.0.0}{2022/05/02}{设置页脚页码} -% 排版正文部分。 +% \begin{macro}{\RequirePackage,\newenvironment} +% \changes{v1.26.0.0}{2022/06/07}{作者简介样式} +% 作者简介样式。 % \begin{macrocode} -\renewcommand { \mainmatter } +\ctex_at_end_preamble:n { - \@@_load_main_geometry: - \pagestyle { plain } - \pagenumbering { arabic } +% \end{macrocode} +% 计算列表和表格缩进距离。 +% \begin{macrocode} + \dim_new:N \l_@@_bio_indent_dim + \box_new:N \l_@@_bio_indent_box + \hbox_set:Nn \l_@@_bio_indent_box { \rmfamily \zihao { -3 } \bfseries 1. \quad} + \dim_set:Nn \l_@@_bio_indent_dim { \box_wd:N \l_@@_bio_indent_box } +% \end{macrocode} +% 定义教育背景表格环境。 +% \begin{macrocode} + \bool_if:NF \l_@@_customize_edubg_bool + { + \RequirePackage { tabularray } + \newenvironment { edubg } + { + \dim_set:Nn \parindent { 0pt } + \begin { tblr } + { + colspec = { @{ \skip_horizontal:N \l_@@_bio_indent_dim } lX @{ } }, + rows = { font = \zihao { -4 } \dim_set:Nn \baselineskip { 20pt } } + } + } + { + \end { tblr } + \dim_set:Nn \parindent { 2 \ccwd } + } + } +% \end{macrocode} +% 定义研究成果列表。 +% \begin{macrocode} + \bool_if:NF \l_@@_customize_resresult_bool + { + \RequirePackage { enumitem } + \SetEnumitemKey { resresult } + { + label = {[}\arabic*{]}, + left = \l_@@_bio_indent_dim, + align = right, + parsep = 0pt, + itemsep = 0pt, + topsep = 0pt + } + \newenvironment { resresult } + { \begin { enumerate } [ resresult ] } + { \end { enumerate } } + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\backmatter} +% 排版后记部分。 +% \begin{macrocode} +\renewcommand { \backmatter } + { +% \end{macrocode} +% \changes{v1.30.0.0}{2022/06/20}{恢复英文研究生学位论文后记一二三级标题命令} +% 恢复英文研究生学位论文后记一二三级标题命令。 +% \begin{macrocode} + \@@_lang_switch:nn { } + { + \cs_set_eq:NN \chapter \@@_org_chapter:n + \cs_set_eq:NN \section \@@_org_section:n + \cs_set_eq:NN \subsection \@@_org_subsection:n + } +% \end{macrocode} +% \changes{v1.25.0.0}{2022/06/05}{研究生学位论文参考文献} +% 参考文献。 +% \begin{macrocode} + \cs_set:Npn \bibname { \@@_lang_switch:nn { 参考文献 } { Bibliography } } + \@@_n_chapter_head_toc:n { \bibname } + \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 参考文献 } } + \group_begin: + \tl_if_eq:NnTF \l_@@_bib_tool_tl { bibtex } + { + \cs_set:Npn \bibsection { } + \rmfamily \zihao { 5 } + \dim_set:Nn \baselineskip { 20pt } + \bibliography { \l_@@_bib_file_clist } + } + { + \defbibheading { bibliography } [ ] { } + \cs_set:Npn \bibfont + { + \rmfamily \zihao { 5 } + \dim_set:Nn \baselineskip { 20pt } + } + \printbibliography + } + \group_end: +% \end{macrocode} +% \changes{v1.24.0.0}{2022/06/05}{研究生学位论文致谢} +% 致谢。 +% \begin{macrocode} + \@@_n_chapter_head_toc:nn + { \@@_lang_switch:nn { 致谢 } { Acknowledgements } } + { \@@_lang_switch:nn { 致 { \quad } 谢 } { Acknowledgements } } + \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 致谢 } } + \group_begin: + \dim_set:Nn \parindent { 2 \ccwd } + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \file_if_exist_input:n { \l_@@_ack_tl } + \group_end: +% \end{macrocode} +% \changes{v1.26.0.0}{2022/06/07}{研究生学位论文作者简介} +% \changes{v1.28.4.0}{2022/06/18}{移除研究生学位论文目录中作者简介二三级标题} +% 作者简介。 +% \begin{macrocode} + \@@_n_chapter_head_toc:n + { \@@_lang_switch:nn { 作者简介 } { Author~Biography } } + \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 作者简介 } } + \group_begin: + \dim_set:Nn \parindent { 2 \ccwd } + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } +% \end{macrocode} +% 配置作者简介部分标题样式。 +% \begin{macrocode} + \ctexset + { + section / number = { \arabic { section } . }, + section / format = { \rmfamily \zihao { -3 } \bfseries \raggedright }, + subsection / number = { \arabic { section } . \arabic { subsection } }, + subsection / format = { \rmfamily \zihao { 4 } \bfseries \raggedright }, + subsection / indent = { \l_@@_bio_indent_dim } + } + \setcounter { section } { 0 } + \addtocontents { toc } { \setcounter { tocdepth } { 0 } } +% \end{macrocode} +% 作者简介文件。 +% \begin{macrocode} + \file_if_exist_input:n { \l_@@_bio_str } + \group_end: } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty b/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty index 322f06f5211..06324233c65 100644 --- a/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty +++ b/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty @@ -28,7 +28,7 @@ \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplPackage{xdufont} - {2022/05/15}{1.15.0.1} + {2022/06/21}{2.0.0.0} {Xidian University Font package} \RequirePackage { xparse, l3keys2e } \PassOptionsToPackage { quiet } { xeCJK } @@ -290,9 +290,9 @@ \cs_new:Npn \__xdu_set_latin_mono_font:nnnnn #1#2#3#4#5 { \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } - { \setmonofont{ #1 } [ \__xdu_set_latin_scale: \__xdu_off_latin_ligatures: ]} + { \setmonofont { #1 } [ \__xdu_set_latin_scale: \__xdu_off_latin_ligatures: ] } { - \setmonofont{ #2 } + \setmonofont { #2 } [ \__xdu_font_path: \__xdu_set_latin_scale: @@ -318,7 +318,7 @@ } \cs_new:Npn \__xdu_set_latin_mono_font:nnnn #1#2#3#4 { - \setmonofont{ #1 } + \setmonofont { #1 } [ \__xdu_set_latin_scale: \__xdu_off_latin_ligatures: @@ -391,9 +391,9 @@ \cs_new:Npn \__xdu_load_math_font_cambria: { \__xdu_load_unicode_math_pkg: - \str_if_eq:NNTF { \l__xdu_font_type_tl} { font} - { \setmathfont { Cambria~Math} } - { \setmathfont { cambria.ttc} [ Path = \l__xdu_font_path_tl/, FontIndex = 1 ] } + \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } + { \setmathfont { Cambria~Math } } + { \setmathfont { cambria.ttc } [ Path = \l__xdu_font_path_tl/, FontIndex = 1 ] } } \cs_new:Npn \__xdu_define_math_font:nn #1#2 { diff --git a/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls b/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls index a0b094d3133..cf4fbea89c4 100644 --- a/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls +++ b/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls @@ -28,7 +28,7 @@ \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplClass{xdupgthesis} - {2022/05/15}{1.15.0.1} + {2022/06/21}{2.0.0.0} {Xidian University Postgraduate Thesis document class} \RequirePackage { xparse, l3keys2e } \PassOptionsToPackage { quiet } { xeCJK } @@ -303,9 +303,9 @@ \cs_new:Npn \__xdu_set_latin_mono_font:nnnnn #1#2#3#4#5 { \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } - { \setmonofont{ #1 } [ \__xdu_set_latin_scale: \__xdu_off_latin_ligatures: ]} + { \setmonofont { #1 } [ \__xdu_set_latin_scale: \__xdu_off_latin_ligatures: ] } { - \setmonofont{ #2 } + \setmonofont { #2 } [ \__xdu_font_path: \__xdu_set_latin_scale: @@ -331,7 +331,7 @@ } \cs_new:Npn \__xdu_set_latin_mono_font:nnnn #1#2#3#4 { - \setmonofont{ #1 } + \setmonofont { #1 } [ \__xdu_set_latin_scale: \__xdu_off_latin_ligatures: @@ -404,9 +404,9 @@ \cs_new:Npn \__xdu_load_math_font_cambria: { \__xdu_load_unicode_math_pkg: - \str_if_eq:NNTF { \l__xdu_font_type_tl} { font} - { \setmathfont { Cambria~Math} } - { \setmathfont { cambria.ttc} [ Path = \l__xdu_font_path_tl/, FontIndex = 1 ] } + \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } + { \setmathfont { Cambria~Math } } + { \setmathfont { cambria.ttc } [ Path = \l__xdu_font_path_tl/, FontIndex = 1 ] } } \cs_new:Npn \__xdu_define_math_font:nn #1#2 { @@ -460,13 +460,14 @@ \str_new:N \l__xdu_dept_str \str_new:N \l__xdu_major_str \str_new:N \l__xdu_author_str -\str_new:N \l__xdu_supv_str +\clist_new:N \l__xdu_supv_clist \str_new:N \l__xdu_supv_ent_str \str_new:N \l__xdu_student_id_str \tl_new:N \l__xdu_abstract_zh_tl \tl_new:N \l__xdu_abstract_en_tl \clist_new:N \l__xdu_keywords_zh_clist \clist_new:N \l__xdu_keywords_en_clist +\clist_new:N \l__xdu_bib_file_clist \tl_new:N \l__xdu_ack_tl \keys_define:nn { xdu / info } { @@ -474,13 +475,14 @@ department .tl_set:N = \l__xdu_dept_str, major .tl_set:N = \l__xdu_major_str, author .tl_set:N = \l__xdu_author_str, - supervisor .tl_set:N = \l__xdu_supv_str, + supervisor .clist_set:N = \l__xdu_supv_clist, supervisor-enterprise .tl_set:N = \l__xdu_supv_ent_str, student-id .tl_set:N = \l__xdu_student_id_str, abstract .tl_set:N = \l__xdu_abstract_zh_tl, abstract* .tl_set:N = \l__xdu_abstract_en_tl, keywords .clist_set:N = \l__xdu_keywords_zh_clist, keywords* .clist_set:N = \l__xdu_keywords_en_clist, + bib-resource .clist_set:N = \l__xdu_bib_file_clist, acknowledgements .tl_set:N = \l__xdu_ack_tl } \keys_set:nn { xdu } @@ -496,17 +498,25 @@ info / abstract* = { }, info / keywords = { }, info / keywords* = { }, + info / bib-resource = { }, info / acknowledgements = { } } +\str_new:N \l__xdu_supv_str +\str_new:N \l__xdu_supv_ii_str +\ctex_at_end_preamble:n + { + \str_set:Nx \l__xdu_supv_str { \clist_item:Nn \l__xdu_supv_clist { 1 } } + \str_set:Nx \l__xdu_supv_ii_str { \clist_item:Nn \l__xdu_supv_clist { 2 } } + } \tl_new:N \l__xdu_gr_type_tl \tl_new:N \l__xdu_degree_type_tl \str_new:N \l__xdu_degree_str \str_new:N \l__xdu_degree_en_str \str_new:N \l__xdu_author_en_str -\str_new:N \l__xdu_supv_en_str +\clist_new:N \l__xdu_supv_en_clist \str_new:N \l__xdu_supv_ent_en_str -\str_new:N \l__xdu_supv_t_str -\str_new:N \l__xdu_supv_t_en_str +\clist_new:N \l__xdu_supv_t_clist +\clist_new:N \l__xdu_supv_t_en_clist \str_new:N \l__xdu_supv_ent_t_str \str_new:N \l__xdu_supv_ent_t_en_str \str_new:N \l__xdu_title_en_str @@ -515,7 +525,11 @@ \str_new:N \l__xdu_domain_str \str_new:N \l__xdu_clc_str \str_new:N \l__xdu_secret_lv_str +\str_new:N \l__xdu_secret_year_str \str_new:N \l__xdu_submit_date_str +\str_new:N \l__xdu_los_str +\str_new:N \l__xdu_loa_str +\str_new:N \l__xdu_bio_str \keys_define:nn { xdu / info } { graduate-type .choices:nn = { 硕士, 博士 } @@ -525,10 +539,10 @@ degree .tl_set:N = \l__xdu_degree_str, degree* .tl_set:N = \l__xdu_degree_en_str, author* .tl_set:N = \l__xdu_author_en_str, - supervisor* .tl_set:N = \l__xdu_supv_en_str, + supervisor* .clist_set:N = \l__xdu_supv_en_clist, supervisor-enterprise* .tl_set:N = \l__xdu_supv_ent_en_str, - supervisor-title .tl_set:N = \l__xdu_supv_t_str, - supervisor-title* .tl_set:N = \l__xdu_supv_t_en_str, + supervisor-title .clist_set:N = \l__xdu_supv_t_clist, + supervisor-title* .clist_set:N = \l__xdu_supv_t_en_clist, supervisor-enterprise-title .tl_set:N = \l__xdu_supv_ent_t_str, supervisor-enterprise-title* .tl_set:N = \l__xdu_supv_ent_t_en_str, title* .tl_set:N = \l__xdu_title_en_str, @@ -538,7 +552,11 @@ clc .tl_set:N = \l__xdu_clc_str, secret-level .choices:nn = { 秘密, 公开 } { \tl_set_eq:NN \l__xdu_secret_lv_str \l_keys_choice_tl }, - submit-date .tl_set:N = \l__xdu_submit_date_str + secret-year .tl_set:N = \l__xdu_secret_year_str, + submit-date .tl_set:N = \l__xdu_submit_date_str, + los .tl_set:N = \l__xdu_los_str, + loa .tl_set:N = \l__xdu_loa_str, + bio .tl_set:N = \l__xdu_bio_str } \keys_set:nn { xdu } { @@ -559,12 +577,41 @@ info / domain = { }, info / clc = { }, info / secret-level = { 公开 }, - info / submit-date = { } + info / secret-year = { }, + info / submit-date = { }, + info / los = { }, + info / loa = { }, + info / bio = { } } +\str_new:N \l__xdu_supv_en_str +\str_new:N \l__xdu_supv_ii_en_str +\str_new:N \l__xdu_supv_t_str +\str_new:N \l__xdu_supv_ii_t_str +\str_new:N \l__xdu_supv_t_en_str +\str_new:N \l__xdu_supv_ii_t_en_str +\ctex_at_end_preamble:n + { + \str_set:Nx \l__xdu_supv_en_str + { \clist_item:Nn \l__xdu_supv_en_clist { 1 } } + \str_set:Nx \l__xdu_supv_ii_en_str + { \clist_item:Nn \l__xdu_supv_en_clist { 2 } } + \str_set:Nx \l__xdu_supv_t_str + { \clist_item:Nn \l__xdu_supv_t_clist { 1 } } + \str_set:Nx \l__xdu_supv_ii_t_str + { \clist_item:Nn \l__xdu_supv_t_clist { 2 } } + \str_set:Nx \l__xdu_supv_t_en_str + { \clist_item:Nn \l__xdu_supv_t_en_clist { 1 } } + \str_set:Nx \l__xdu_supv_ii_t_en_str + { \clist_item:Nn \l__xdu_supv_t_en_clist { 2 } } + } +\cs_set:Npn \figurename { \__xdu_lang_switch:nn { 图 } { Figure } } +\cs_new_eq:NN \figname \figurename +\cs_set:Npn \tablename { \__xdu_lang_switch:nn { 表 } { Table } } +\cs_new_eq:NN \tabname \tablename \bool_new:N \l__xdu_en_cjk_font_bool \tl_new:N \l__xdu_lang_tl \tl_new:N \l__xdu_bib_tool_tl -\clist_new:N \l__xdu_bib_file_clist +\tl_new:N \l__xdu_biblatex_option_tl \tl_new:N \l__xdu_ref_add_space \tl_new:N \l__xdu_cap_label_sep_tl \bool_new:N \l__xdu_tab_small_bool @@ -586,7 +633,7 @@ { \tl_set_eq:NN \l__xdu_lang_tl \l_keys_choice_tl }, bib-backend .choices:nn = { bibtex, biblatex } { \tl_set_eq:NN \l__xdu_bib_tool_tl \l_keys_choice_tl }, - bib-resource .clist_set:N = \l__xdu_bib_file_clist, + biblatex-option .tl_set:N = \l__xdu_biblatex_option_tl, ref-add-space .bool_set:N = \l__xdu_ref_add_space, caption-label-sep .tl_set:N = \l__xdu_cap_label_sep_tl, table-small-font .bool_set:N = \l__xdu_tab_small_bool, @@ -607,7 +654,7 @@ style / en-cjk-font = false, style / language = zh, style / bib-backend = biblatex, - style / bib-resource = { }, + style / biblatex-option = { }, style / ref-add-space = false, style / caption-label-sep = { 0.75em }, style / table-small-font = true, @@ -615,7 +662,43 @@ style / before-skip = { 24pt, 18pt, 12pt, 12pt, 12pt, 12pt }, style / after-skip = { 18pt, 12pt, 6pt, 6pt, 6pt, 6pt }, style / symmetric-margin = false, - style / page-vertical-align = {顶部对齐} + style / page-vertical-align = { 顶部对齐 } + } +\bool_new:N \l__xdu_customize_los_bool +\bool_new:N \l__xdu_customize_loa_bool +\tl_new:N \l__xdu_colspec_los_tl +\tl_new:N \l__xdu_colspec_loa_tl +\bool_new:N \l__xdu_title_row_los_bool +\bool_new:N \l__xdu_title_row_loa_bool +\keys_define:nn { xdu / style } + { + customize-los .bool_set:N = \l__xdu_customize_los_bool, + customize-loa .bool_set:N = \l__xdu_customize_loa_bool, + colspec-los .tl_set:N = \l__xdu_colspec_los_tl, + colspec-loa .tl_set:N = \l__xdu_colspec_loa_tl, + title-row-los .bool_set:N = \l__xdu_title_row_los_bool, + title-row-loa .bool_set:N = \l__xdu_title_row_loa_bool + } +\keys_set:nn { xdu } + { + style / customize-los = { true }, + style / customize-loa = { true }, + style / colspec-los = { Q[l,m]X[l,m] }, + style / colspec-loa = { Q[l,m]X[l,m]X[l,m] }, + style / title-row-los = { false }, + style / title-row-loa = { false } + } +\bool_new:N \l__xdu_customize_edubg_bool +\bool_new:N \l__xdu_customize_resresult_bool +\keys_define:nn { xdu / style } + { + customize-edubg .bool_set:N = \l__xdu_customize_edubg_bool, + customize-resresult .bool_set:N = \l__xdu_customize_resresult_bool + } +\keys_set:nn { xdu } + { + style / customize-edubg = { true }, + style / customize-resresult = { true } } \NewDocumentCommand \xdusetup { m } { \keys_set:nn { xdu } { #1 } } @@ -664,6 +747,20 @@ \str_set_eq:NN \l__xdu_pure_title_str \l__xdu_title_str \str_remove_all:Nn \l__xdu_pure_title_str { \\ } } +\cs_new_protected:Npn \__xdu_split_title:Nn #1#2 + { + \seq_new:N \l__xdu_title_seq + \tl_if_in:nnTF { #2 } { \\ } + { + \seq_set_split:Nnn \l__xdu_title_seq { \\ } { #2 } + \clist_set_from_seq:NN #1 \l__xdu_title_seq + } + { + \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 1 } { 14 } } + \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 15 } { -1 } } + } + } +\cs_generate_variant:Nn \__xdu_split_title:Nn { NV } \cs_new:Npn \__xdu_uline:n #1 { \CJKunderline [ thickness = 0.5pt ] { #1 } } \cs_new:Npn \__xdu_tl_set_if_empty:Nn #1#2 @@ -691,10 +788,10 @@ } \cs_new:Npn \__xdu_n_chapter_head_ii:nn #1#2 { - { + \group_begin: \ctexset { chapter / format = { #2 } } \__xdu_n_chapter_head:n { #1 } - } + \group_end: } \cs_new:Npn \__xdu_n_chapter_head:nn #1#2 { @@ -704,10 +801,10 @@ } \cs_new:Npn \__xdu_n_chapter_head_ii:nnn #1#2#3 { - { + \group_begin: \ctexset { chapter / format = { #3 } } \__xdu_n_chapter_head:nn { #1 } { #2 } - } + \group_end: } \cs_new:Npn \__xdu_n_chapter_head_toc:n #1 { @@ -721,13 +818,20 @@ \chapter* { #2 } \markboth { #1 } { } } +\cs_new:Npn \__xdu_n_chapter_head_toc_ii:nn #1#2 + { + \group_begin: + \ctexset { chapter / format = { #2 } } + \__xdu_n_chapter_head_toc:n { #1 } + \group_end: + } \cs_new:Npn \__xdu_typeout_keywords:nNn #1#2#3 { - \str_clear_new:N \l__xdu_keywords_label_str - \str_set:Nn \l__xdu_keywords_label_str { #1 } + \tl_clear_new:N \l__xdu_keywords_label_str + \tl_set:Nn \l__xdu_keywords_label_tl { #1 } \dim_zero_new:N \l__xdu_keywords_label_dim - \__xdu_get_text_width:NV \l__xdu_keywords_label_dim \l__xdu_keywords_label_str - \begin { list } { \l__xdu_keywords_label_str } + \__xdu_get_text_width:NV \l__xdu_keywords_label_dim \l__xdu_keywords_label_tl + \begin { list } { \l__xdu_keywords_label_tl } { \labelwidth \l__xdu_keywords_label_dim \labelsep \c_zero_dim @@ -737,6 +841,14 @@ \item \clist_use:Nnnn #2 { #3 } { #3 } { #3 } \end { list } } +\dim_new:N \l__xdu_str_dim +\box_new:N \l__xdu_str_box +\cs_new:Npn \__xdu_str_max_dim:Nn #1#2 + { + \hbox_set:Nn \l__xdu_str_box { #2 } + \dim_set:Nn \l__xdu_str_dim { \box_wd:N \l__xdu_str_box } + \dim_set:Nn #1 { \dim_max:nn { \l__xdu_str_dim } { #1 } } + } \NewDocumentCommand \noauxwrite { m } { \if@filesw @@ -749,29 +861,31 @@ } \newgeometry { - top = 3cm, + top = 3.14cm, bottom = 2.5cm, inner = 2.5cm, outer = 2.5cm, bindingoffset = 0.5cm, - head = 2cm, + headheight = 20pt, + headsep = 10pt, foot = 0.75cm } \savegeometry { main } \newgeometry { - top = 3cm, - bottom = 2.5cm, - inner = 2.75cm, - outer = 2.75cm, - head = 2cm, - foot = 0.75cm + top = 3.14cm, + bottom = 2.5cm, + inner = 2.75cm, + outer = 2.75cm, + headheight = 20pt, + headsep = 10pt, + foot = 0.75cm } \savegeometry { main-sym } \newgeometry { top = 3cm, - bottom = 2cm, + bottom = 1cm, inner = 3cm, outer = 2.5cm } @@ -818,6 +932,8 @@ \cs_set:Npn \headrulewidth { 0.5pt } \cs_set:Npn \headrule { + \hrule \@height 0pt + \skip_vertical:N 2pt \hrule \@height \headrulewidth \skip_vertical:N \headrulewidth \hrule \@height \headrulewidth @@ -836,6 +952,108 @@ { \raggedbottom } { \flushbottom } } +\ctexset { secnumdepth=5 } +\ctex_at_end_preamble:n + { + \__xdu_lang_switch:nn + { \ctexset { chapter / name = { 第, 章 } } } + { \ctexset { chapter / name = { Chapter\space } } } + } +\ctexset + { + section / name = { }, + subsection / name = { }, + subsubsection / name = { (, ) }, + paragraph / name = { (, ) }, + subparagraph / name = { (, ) } + } +\ctex_at_end_preamble:n + { + \__xdu_lang_switch:nn + { \ctexset { chapter / number = { \chinese { chapter } } } } + { \ctexset { chapter / number = { \Roman { chapter } } } } + } +\ctexset + { + section / number = { \thesection }, + subsection / number = { \thesubsection }, + subsubsection / number = { \arabic { subsubsection } }, + paragraph / number = { \alph { paragraph } }, + subparagraph / number = { \roman { subparagraph } } + } +\cs_new:Npn \__xdu_sec_format_i:n #1 + { \__xdu_rm_family: \bfseries \zihao { #1 } \dim_set:Nn \baselineskip { 20pt } } +\cs_new:Npn \__xdu_sec_format_ii: + { \__xdu_sf_family: \centering \zihao { 3 } \dim_set:Nn \baselineskip { 20pt } } +\cs_new:Npn \__xdu_sec_format_iii: + { \__xdu_rm_family: \centering \zihao { 3 } \dim_set:Nn \baselineskip { 20pt } } +\ctex_at_end_preamble:n + { + \__xdu_lang_switch:nn + { \ctexset { chapter / format = { \__xdu_sec_format_ii: } } } + { \ctexset { chapter / format = { \__xdu_sec_format_iii: } } } + } +\ctexset + { + section / format = { \__xdu_sec_format_i:n { -3 } }, + subsection / format = { \__xdu_sec_format_i:n { 4 } }, + subsubsection / format = { \__xdu_sec_format_i:n { 4 } }, + paragraph / format = { \__xdu_sec_format_i:n { 4 } }, + subparagraph / format = { \__xdu_sec_format_i:n { 4 } } + } +\ctexset + { + chapter / aftername = { \quad }, + section / aftername = { \enskip }, + subsection / aftername = { \enskip }, + subsubsection / aftername = { }, + paragraph / aftername = { }, + subparagraph / aftername = { } + } +\ctexset + { + chapter / indent = { 0bp }, + section / indent = { 0bp }, + subsection / indent = { 24bp }, + subsubsection / indent = { 24bp }, + paragraph / indent = { 24bp }, + subparagraph / indent = { 24bp } + } +\ctexset + { + chapter / beforeskip = { 6pt }, + section / beforeskip = { 18pt }, + subsection / beforeskip = { 12pt }, + subsubsection / beforeskip = { 12pt }, + paragraph / beforeskip = { 12pt }, + subparagraph / beforeskip = { 12pt }, + chapter / afterskip = { 18pt }, + section / afterskip = { 12pt }, + subsection / afterskip = { 6pt }, + subsubsection / afterskip = { 6pt }, + paragraph / afterskip = { 6pt }, + subparagraph / afterskip = { 6pt } + } +\PassOptionsToPackage { titles } { tocloft } +\RequirePackage { tocloft } +\cs_set:Npn \cftdotsep { 0 } +\cs_set:Npn \cftchapleader { \cftdotfill { \cftdotsep } } +\dim_set_eq:NN \cftbeforechapskip \cftbeforesecskip +\ctex_at_end_preamble:n + { + \__xdu_lang_switch:nn + { \cs_set:Npn \cftchapfont { \__xdu_sf_family: \zihao { -4 } } } + { \cs_set:Npn \cftchapfont { \__xdu_rm_family: \zihao { -4 } } } + } +\clist_map_inline:nn + { + \cftsecfont, + \cftsubsecfont, + \cftchappagefont, + \cftsecpagefont, + \cftsubsecpagefont + } + { \renewcommand { #1 } { \__xdu_rm_family: \zihao { -4 } } } \renewcommand { \theequation } { \thechapter - \arabic { equation } } \ctex_at_end_preamble:n { @@ -937,6 +1155,7 @@ { \captionsetup [ subfloat ] { subrefformat = parens } } { } } +\PassOptionsToPackage { labelformat = simple } { subcaption } \ctex_at_end_preamble:n { \@ifpackageloaded { subcaption } @@ -981,7 +1200,7 @@ } { } } -\RequirePackage{ hyperref } +\RequirePackage { hyperref } \hypersetup { bookmarksnumbered, @@ -1036,23 +1255,954 @@ { \group_begin: \citestyle { numbers } \cite { #1 } \group_end: } } { + \PassOptionsToPackage { \l__xdu_biblatex_option_tl } { biblatex } \RequirePackage { biblatex } \clist_map_inline:Nn \l__xdu_bib_file_clist { \addbibresource { #1 } } } } +\RequirePackage { environ } +\NewEnviron { appendixes } + { + \cs_set:Npn \appendixname { \__xdu_lang_switch:nn { 附录 } { Appendix } } + \tl_set_eq:NN \l__xdu_chaptername \appendixname + \cs_set_eq:NN \__xdu_Roman: \__xdu_Alph: + \appendix + \renewcommand { \thefigure } { \thechapter \arabic { figure } } + \renewcommand { \thetable } { \thechapter \arabic { table } } + \cs_if_exist:NT \thealgorithm + { \cs_set:Npn \thealgorithm { \thechapter \arabic { algorithm } } } + \cs_if_exist:NT \thealgocf + { \cs_set:Npn \thealgocf { \thechapter \arabic { algocf } } } + \BODY + } +\bool_new:N \l__xdu_ac_master +\bool_new:N \l__xdu_pro_master +\bool_new:N \l__xdu_ac_phd +\bool_new:N \l__xdu_pro_phd +\bool_new:N \l__xdu_phd +\bool_new:N \l__xdu_master +\bool_new:N \l__xdu_ac +\bool_new:N \l__xdu_pro +\ctex_at_end_preamble:n + { + \tl_if_eq:NnTF \l__xdu_gr_type_tl { 硕士 } + { + \bool_set_true:N \l__xdu_master + \tl_if_eq:NnTF \l__xdu_degree_type_tl { 学术 } + { \bool_set_true:N \l__xdu_ac_master } + { \bool_set_true:N \l__xdu_pro_master } + } + { + \bool_set_true:N \l__xdu_phd + \tl_if_eq:NnTF \l__xdu_degree_type_tl { 学术 } + { \bool_set_true:N \l__xdu_ac_phd } + { \bool_set_true:N \l__xdu_pro_phd } + } + \tl_if_eq:NnTF \l__xdu_degree_type_tl { 学术 } + { \bool_set_true:N \l__xdu_ac } + { \bool_set_true:N \l__xdu_pro } + } +\cs_new:Npn \__xdu_cover_i:nnnnn #1#2#3#4#5 + { + \dim_set:Nn \baselineskip { 20pt } + \vbox_to_ht:nn { #1 } + { + \vfill + \mode_leave_vertical: + \hfil + \use:c { #2 family } \zihao { #3 } + \str_if_eq:nnTF { #4 } { bf } { \bfseries } { } + #5 + \hfil + } + } +\cs_new:Npn \__xdu_cover_ii:nnnn #1#2#3#4 + { + \dim_set:Nn \baselineskip { 20pt } + \vbox_to_ht:nn { 25pt } + { + \vfill + \mode_leave_vertical: + \hfil + \hbox:n + { + \zihao { 4 } \bfseries + \hbox_to_wd:nn { #1 } { \sffamily #2 } + \skip_horizontal:n { 0.5em } + \__xdu_uline:n + { + \skip_horizontal:n { 9em - #1 } + \hbox_to_wd:nn { #3 } { \hfil \rmfamily #4 \hfil } + } + } + \hfil + } + } +\cs_new:Npn \__xdu_cover_iii:nnnn #1#2#3#4 + { + \dim_set:Nn \baselineskip { 20pt } + \hbox:n + { + \rmfamily \zihao { 5 } \bfseries + \hbox_to_wd:nn { #1 } { #2 } + \skip_horizontal:n { 0.5em } + \__xdu_uline:n { \hbox_to_wd:nn { #3 } { \hfil #4 \hfil } } + } + } +\cs_new:Npn \__xdu_en_month:n #1 + { + \str_case:Vn #1 + { + { 1 } { January } + { 2 } { February } + { 3 } { March } + { 4 } { April } + { 5 } { May } + { 6 } { June } + { 7 } { July } + { 8 } { August } + { 9 } { September } + { 10 } { October } + { 11 } { November } + { 12 } { December } + { 01 } { January } + { 02 } { February } + { 03 } { March } + { 04 } { April } + { 05 } { May } + { 06 } { June } + { 07 } { July } + { 08 } { August } + { 09 } { September } + } + } +\cs_new:Npn \__xdu_zh_today: + { \int_use:N \c_sys_year_int 年 \int_use:N \c_sys_month_int 月 } +\cs_new:Npn \__xdu_en_today: + { \__xdu_en_month:n { \c_sys_month_int } ~ \int_use:N \c_sys_year_int } +\seq_new:N \l__xdu_submit_date_seq +\cs_new:Npn \__xdu_split_submit_date:N #1 + { + \seq_set_split:NnV \l__xdu_submit_date_seq { - } \l__xdu_submit_date_str + \clist_set_from_seq:NN #1 \l__xdu_submit_date_seq + } +\clist_new:N \l__xdu_submit_date_clist +\cs_new:Npn \__xdu_zh_submit_date: + { + \str_if_empty:NTF \l__xdu_submit_date_str + { \__xdu_zh_today: } + { + \__xdu_split_submit_date:N \l__xdu_submit_date_clist + \clist_item:Nn \l__xdu_submit_date_clist { 1 } 年 + \clist_item:Nn \l__xdu_submit_date_clist { 2 } 月 + } + } +\str_new:N \l__xdu_submit_date_month_str +\cs_new:Npn \__xdu_en_submit_date: + { + \str_if_empty:NTF \l__xdu_submit_date_str + { \__xdu_en_today: } + { + \__xdu_split_submit_date:N \l__xdu_submit_date_clist + \str_set:Nx \l__xdu_submit_date_month_str + { \clist_item:Nn \l__xdu_submit_date_clist { 2 } } + \__xdu_en_month:n { \l__xdu_submit_date_month_str } ~ + \clist_item:Nn \l__xdu_submit_date_clist { 1 } + } + } +\cs_new:Npn \__xdu_cover_author_info: + { + \rmfamily \zihao { 4 } + \dim_new:N \l__xdu_cover_author_info_dim + \dim_set:Nn \l__xdu_cover_author_info_dim { 7em } + \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim { \l__xdu_author_str } + \bool_if:NTF \l__xdu_pro_master + { + \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim + { \l__xdu_supv_str \enskip \l__xdu_supv_t_str } + \str_if_empty:NF \l__xdu_supv_ii_str + { + \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim + { \l__xdu_supv_ii_str \enskip \l__xdu_supv_ii_t_str } + } + \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim + { \l__xdu_supv_ent_str \enskip \l__xdu_supv_ent_t_str } + } + { + \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim + { \l__xdu_supv_str \enskip \l__xdu_supv_t_str } + \str_if_empty:NF \l__xdu_supv_ii_str + { + \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim + { \l__xdu_supv_ii_str \enskip \l__xdu_supv_ii_t_str } + } + } + \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim { \l__xdu_degree_str } + \dim_add:Nn \l__xdu_cover_author_info_dim { 3em } + \__xdu_cover_ii:nnnn { 4em } { 作者姓名 } + { \l__xdu_cover_author_info_dim } + { \l__xdu_author_str } + \bool_if:NTF \l__xdu_pro_master + { + \__xdu_cover_ii:nnnn { 9em } { 学校导师姓名、职称 } + { \l__xdu_cover_author_info_dim } + { \l__xdu_supv_str \enskip \l__xdu_supv_t_str } + \str_if_empty:NF \l__xdu_supv_ii_str + { + \__xdu_cover_ii:nnnn { 9em } { } + { \l__xdu_cover_author_info_dim } + { \l__xdu_supv_ii_str \enskip \l__xdu_supv_ii_t_str } + } + \__xdu_cover_ii:nnnn { 9em } { 企业导师姓名、职称 } + { \l__xdu_cover_author_info_dim } + { \l__xdu_supv_ent_str \enskip \l__xdu_supv_ent_t_str } + } + { + \__xdu_cover_ii:nnnn { 9em } { 指导教师姓名、职称 } + { \l__xdu_cover_author_info_dim } + { \l__xdu_supv_str \enskip \l__xdu_supv_t_str } + \str_if_empty:NF \l__xdu_supv_ii_str + { + \__xdu_cover_ii:nnnn { 9em } { } + { \l__xdu_cover_author_info_dim } + { \l__xdu_supv_ii_str \enskip \l__xdu_supv_ii_t_str } + } + } + \__xdu_cover_ii:nnnn { 6em } { 申请学位类别 } + { \l__xdu_cover_author_info_dim } + { \l__xdu_degree_str } + } +\cs_new:Npn \__xdu_zh_title_page_info: + { + \rmfamily \zihao { 4 } + \dim_new:N \l__xdu_zh_title_page_info_dim + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 作者姓名:\l__xdu_author_str } + \bool_if:NTF \l__xdu_ac + { + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 一级学科:\l__xdu_major_str } + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 二级学科(研究方向):\l__xdu_sub_major_str } + } + { + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 领\qquad{}域:\l__xdu_domain_str } + } + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 学位类别:\l__xdu_degree_str } + \bool_if:NTF \l__xdu_pro_master + { + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 学校导师姓名、职称:\l__xdu_supv_str \enskip \l__xdu_supv_t_str } + \str_if_empty:NF \l__xdu_supv_ii_str + { + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 学校导师姓名、职称:\l__xdu_supv_ii_str \enskip \l__xdu_supv_ii_t_str } + } + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 企业导师姓名、职称:\l__xdu_supv_ent_str \enskip \l__xdu_supv_ent_t_str } + } + { + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 指导教师姓名、职称:\l__xdu_supv_str \enskip \l__xdu_supv_t_str } + \str_if_empty:NF \l__xdu_supv_ii_str + { + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 指导教师姓名、职称:\l__xdu_supv_ii_str \enskip \l__xdu_supv_ii_t_str } + } + } + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 学\qquad{}院:\l__xdu_dept_str } + \__xdu_str_max_dim:Nn \l__xdu_zh_title_page_info_dim + { 提交日期:\__xdu_zh_submit_date: } + \dim_new:N \l__xdu_zh_title_page_info_skip_dim + \dim_set_eq:NN \l__xdu_zh_title_page_info_skip_dim \linewidth + \dim_sub:Nn \l__xdu_zh_title_page_info_skip_dim { \l__xdu_zh_title_page_info_dim } + \skip_horizontal:n { \dim_eval:n { \l__xdu_zh_title_page_info_skip_dim / 2 } } + \vbox:n + { + \rmfamily \zihao { 4 } + \dim_set:Nn \baselineskip { 32pt } + { \bfseries 作者姓名: } \l__xdu_author_str + \bool_if:NTF \l__xdu_ac + { + \par + { \bfseries 一级学科: } \l__xdu_major_str + \par + { \bfseries 二级学科(研究方向): } \l__xdu_sub_major_str + } + { + \par + { \bfseries 领\qquad{}域: } \l__xdu_domain_str + } + \par + { \bfseries 学位类别: } \l__xdu_degree_str + \bool_if:NTF \l__xdu_pro_master + { + \par + { \bfseries 学校导师姓名、职称: } + \l__xdu_supv_str \enskip \l__xdu_supv_t_str + \str_if_empty:NF \l__xdu_supv_ii_str + { + \par + \phantom { 学校导师姓名、职称: } + \l__xdu_supv_ii_str \enskip \l__xdu_supv_ii_t_str + } + \par + { \bfseries 企业导师姓名、职称: } + \l__xdu_supv_ent_str \enskip \l__xdu_supv_ent_t_str + } + { + \par + { \bfseries 指导教师姓名、职称: } + \l__xdu_supv_str \enskip \l__xdu_supv_t_str + \str_if_empty:NF \l__xdu_supv_ii_str + { + \par + \phantom { 指导教师姓名、职称: } + \l__xdu_supv_ii_str \enskip \l__xdu_supv_ii_t_str + } + } + \par + { \bfseries 学\qquad{}院: } \l__xdu_dept_str + \par + { \bfseries 提交日期: } \__xdu_zh_submit_date: + } + } +\cs_new:Npn \__xdu_zh_title_page: + { + \vbox:n { } + \skip_vertical:n { -7.5pt } + \dim_set:Nn \baselineskip { 15.6bp } + \vbox:n + { + \mode_leave_vertical: + \__xdu_cover_iii:nnnn { 4em } { 学校代码 } { 7em } { 10701 } + \hfill + \__xdu_cover_iii:nnnn { 3em } { 学号 } { 7em } { \l__xdu_student_id_str } + } + \vbox:n + { + \mode_leave_vertical: + \__xdu_cover_iii:nnnn { 4em } { 分类号 } { 7em } { \l__xdu_clc_str } + \hfill + \__xdu_cover_iii:nnnn { 3em } { 密级 } { 7em } { \l__xdu_secret_lv_str } + } + \__xdu_cover_i:nnnnn { 100pt } { sf } { 1 } { bf } { 西安电子科技大学 } + \__xdu_cover_i:nnnnn { 85pt } { rm } { -1 } { bf } { \l__xdu_gr_type_tl 学位论文 } + \skip_vertical:n { 87.5pt } + \vbox_to_ht:nn { 150pt } + { + \rmfamily \zihao { 2 } \bfseries \centering + \dim_set:Nn \baselineskip { 30pt } + \l__xdu_title_str + } + \group_begin: + \__xdu_zh_title_page_info: + \group_end: + \cleardoublepage + } +\dim_new:N \l__xdu_supv_dim +\dim_new:N \l__xdu_supv_max_dim +\box_new:N \l__xdu_supv_box +\cs_new:Npn \__xdu_en_title_supv:n #1 + { + \rmfamily \zihao { 3 } + \dim_zero:N \l__xdu_supv_max_dim + \hbox_set:Nn \l__xdu_supv_box { \l__xdu_supv_en_str } + \dim_set:Nn \l__xdu_supv_dim { \box_wd:N \l__xdu_supv_box } + \dim_set:Nn \l__xdu_supv_max_dim + { \dim_max:nn { \l__xdu_supv_dim } { \l__xdu_supv_max_dim } } + \str_if_empty:NF \l__xdu_supv_ii_str + { + \hbox_set:Nn \l__xdu_supv_box { \l__xdu_supv_ii_en_str } + \dim_set:Nn \l__xdu_supv_dim { \box_wd:N \l__xdu_supv_box } + \dim_set:Nn \l__xdu_supv_max_dim + { \dim_max:nn { \l__xdu_supv_dim } { \l__xdu_supv_max_dim } } + } + \bool_if:NT \l__xdu_pro_master + { + \hbox_set:Nn \l__xdu_supv_box { \l__xdu_supv_ent_en_str } + \dim_set:Nn \l__xdu_supv_dim { \box_wd:N \l__xdu_supv_box } + \dim_set:Nn \l__xdu_supv_max_dim + { \dim_max:nn { \l__xdu_supv_dim } { \l__xdu_supv_max_dim } } + } + \hbox_to_wd:nn { \l__xdu_supv_max_dim } { #1 \hfil } \quad + } +\dim_new:N \l__xdu_supv_t_dim +\dim_new:N \l__xdu_supv_t_max_dim +\box_new:N \l__xdu_supv_t_box +\cs_new:Npn \__xdu_en_title_supv_t:n #1 + { + \rmfamily \zihao { 3 } + \dim_zero:N \l__xdu_supv_t_max_dim + \hbox_set:Nn \l__xdu_supv_t_box { \l__xdu_supv_t_en_str } + \dim_set:Nn \l__xdu_supv_t_dim { \box_wd:N \l__xdu_supv_t_box } + \dim_set:Nn \l__xdu_supv_t_max_dim + { \dim_max:nn { \l__xdu_supv_t_dim } { \l__xdu_supv_t_max_dim } } + \str_if_empty:NF \l__xdu_supv_ii_str + { + \hbox_set:Nn \l__xdu_supv_t_box { \l__xdu_supv_ii_t_en_str } + \dim_set:Nn \l__xdu_supv_t_dim { \box_wd:N \l__xdu_supv_t_box } + \dim_set:Nn \l__xdu_supv_t_max_dim + { \dim_max:nn { \l__xdu_supv_t_dim } { \l__xdu_supv_t_max_dim } } + } + \bool_if:NT \l__xdu_pro_master + { + \hbox_set:Nn \l__xdu_supv_t_box { \l__xdu_supv_ent_t_en_str } + \dim_set:Nn \l__xdu_supv_t_dim { \box_wd:N \l__xdu_supv_t_box } + \dim_set:Nn \l__xdu_supv_t_max_dim + { \dim_max:nn { \l__xdu_supv_t_dim } { \l__xdu_supv_t_max_dim } } + } + \hbox_to_wd:nn { \l__xdu_supv_t_max_dim } { #1 \hfil } \quad + } +\cs_new:Npn \__xdu_en_title_page: + { + \vbox:n { } + \skip_vertical:n { -3.5pt } + \dim_set:Nn \baselineskip { 30pt } + \vbox_to_ht:nn { 170pt } + { + \rmfamily \zihao { 2 } \bfseries \centering + \dim_set:Nn \baselineskip { 30pt } + \l__xdu_title_en_str + } + \vbox_to_ht:nn { 360pt } + { + \rmfamily \zihao { 3 } \centering + \dim_set:Nn \baselineskip { 30pt } + A + \bool_if:NTF \l__xdu_master { ~thesis~ } { ~dissertation~ } + submitted~to\\ + XIDIAN~UNIVERSITY\\ + in~partial~fulfillment~of~the~requirements\\ + for~the~degree~of + \bool_if:NTF \l__xdu_master { ~Master\\ } { ~Doctor~of~Philosophy\\ } + in + \bool_if:NTF \l__xdu_pro_master + { ~\l__xdu_degree_en_str\\ } + { ~\l__xdu_major_en_str\\ } + } + \vbox:n + { + \rmfamily \zihao { 3 } \centering + \dim_set:Nn \baselineskip { 30pt } + By\\ + \l__xdu_author_en_str + \str_if_empty:NTF \l__xdu_author_en_str + { \skip_vertical:N \baselineskip } + { \\ } + Supervisor:~\__xdu_en_title_supv:n { \l__xdu_supv_en_str } + Title:~\__xdu_en_title_supv_t:n { \l__xdu_supv_t_en_str } \\ + \str_if_empty:NF \l__xdu_supv_ii_str + { + \phantom { Supervisor:~ } \__xdu_en_title_supv:n { \l__xdu_supv_ii_en_str } + \phantom { Title:~ } \__xdu_en_title_supv_t:n { \l__xdu_supv_ii_t_en_str } \\ + } + \bool_if:NT \l__xdu_pro_master + { + Supervisor:~ \__xdu_en_title_supv:n { \l__xdu_supv_ent_en_str } + Title:~ \__xdu_en_title_supv_t:n { \l__xdu_supv_ent_t_en_str } \\ + } + \__xdu_en_submit_date: + } + \cleardoublepage + } +\cs_new:Npn \__xdu_statement: + { + \vbox:n { } + \skip_vertical:n { -7.5pt } + \vbox_to_ht:nn { 60pt } + { + \rmfamily \zihao { 4 } \bfseries \centering + \dim_set:Nn \baselineskip { 20pt } + 西安电子科技大学\\ + 学位论文独创性(或创新性)声明 + } + \vbox_to_ht:nn { 140pt } + { + \rmfamily \zihao { -4 } + \dim_set:Nn \parindent { 2em } + \dim_set:Nn \baselineskip { 20pt } + 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在导师指 + 导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢 + 中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;也不包 + 含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一 + 同工作的同事对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 + \par + 学位论文若有不实之处,本人承担一切法律责任。 + \vfil + } + \vbox_to_ht:nn { 175pt } + { + \rmfamily \zihao { -4 } + \dim_set:Nn \parindent { 2em } + \dim_set:Nn \baselineskip { 20pt } + 本人签名:\__xdu_uline:n { \skip_horizontal:n { 10em } } + \hfill + 日\qquad{}期:\__xdu_uline:n { \skip_horizontal:n { 10em } } + } + \vbox_to_ht:nn { 60pt } + { + \rmfamily \zihao { 4 } \bfseries \centering + \dim_set:Nn \baselineskip { 20pt } + 西安电子科技大学\\ + 关于论文使用授权的说明 + } + \vbox_to_ht:nn { 140pt } + { + \rmfamily \zihao { -4 } + \dim_set:Nn \parindent { 2em } + \dim_set:Nn \baselineskip { 20pt } + 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生在校 + 攻读学位期间论文工作的知识产权属于西安电子科技大学。学校有权保留送交论文 + 的复印件,允许查阅、借阅论文;学校可以公布论文的全部或部分内容,允许采用 + 影印、缩印或其它复制手段保存论文。同时本人保证,结合学位论文研究成果完成 + 的论文、发明专利等成果,署名单位为西安电子科技大学。 + \par + 保密的学位论文在 + \str_if_eq:NNTF \l__xdu_secret_lv_str { 秘密 } + { + \str_if_empty:NTF \l__xdu_secret_year_str + { \__xdu_uline:n { \skip_horizontal:n { 1.5em } } } + { \__xdu_uline:n { \enskip \l__xdu_secret_year_str \enskip } } + } + { \__xdu_uline:n { \skip_horizontal:n { 1.5em } } } + 年解密后适用本授权书。 + \vfil + } + \vbox:n + { + \rmfamily \zihao { -4 } + \dim_set:Nn \parindent { 2em } + \dim_set:Nn \baselineskip { 40pt } + 本人签名:\__xdu_uline:n { \skip_horizontal:n { 10em } } + \hfill + 导师签名:\__xdu_uline:n { \skip_horizontal:n { 10em } } + \par + 日\qquad{}期:\__xdu_uline:n { \skip_horizontal:n { 10em } } + \hfill + 日\qquad{}期:\__xdu_uline:n { \skip_horizontal:n { 10em } } + } + \cleardoublepage + } +\cs_new:Npn \__xdu_zh_abstract_keywords: + { + \__xdu_n_chapter_head_toc:nn { 摘要 } { 摘 { \quad } 要 } + \__xdu_lang_switch:nn { } { \__xdu_add_zh_toc:nn { chapter } { 摘要 } } + \group_begin: + \dim_set:Nn \parindent { 2 \ccwd } + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \file_if_exist_input:n { \l__xdu_abstract_zh_tl } + \group_end: + \group_begin: + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \skip_vertical:n { 20pt } + \__xdu_typeout_keywords:nNn + { \textbf { 关键词 } : } { \l__xdu_keywords_zh_clist } { , } + \group_end: + \cleardoublepage + } +\cs_new:Npn \__xdu_en_abstract_keywords: + { + \__xdu_n_chapter_head_toc_ii:nn + { \textrm { ABSTRACT } } { \centering \rmfamily \zihao { 3 } \dim_set:Nn \baselineskip { 20pt } } + \__xdu_lang_switch:nn { } { \__xdu_add_zh_toc:nn { chapter } { \textrm { ABSTRACT } } } + \group_begin: + \dim_set:Nn \parskip { 20pt } + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \file_if_exist:nT { \l__xdu_abstract_en_tl } { \skip_vertical:n { -20pt } } + \file_if_exist_input:n { \l__xdu_abstract_en_tl } + \group_end: + \group_begin: + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \skip_vertical:n { 20pt } + \__xdu_typeout_keywords:nNn + { \textbf { Keywords } : } { \l__xdu_keywords_en_clist } { ,~ } + \group_end: + \cleardoublepage + } +\cs_new:Npn \__xdu_loft_label_num_width:nN #1#2 + { + \tl_clear_new:N \l__xdu_loft_tl + \file_get:nnN + { \jobname.#1 } + { \let\do\@makeother \dospecials } + \l__xdu_loft_tl + \seq_clear_new:N \l__xdu_loft_label_num_seq + \cs_generate_variant:Nn \regex_extract_all:nnN { nVN } + \str_if_eq:nnTF { #1 } { lof } + { + \regex_extract_all:nVN + { \\contentsline\ \{figure\}\{\\numberline\ \{\K[0-9A-Z\.]+ } + \l__xdu_loft_tl \l__xdu_loft_label_num_seq + } + { + \regex_extract_all:nVN + { \\contentsline\ \{table\}\{\\numberline\ \{\K[0-9A-Z\.]+ } + \l__xdu_loft_tl \l__xdu_loft_label_num_seq + } + \dim_zero_new:N \l__xdu_loft_label_num_dim + \seq_map_inline:Nn \l__xdu_loft_label_num_seq + { + \__xdu_get_text_width:Nn \l__xdu_loft_label_num_dim { ##1 } + \dim_set:Nn #2 { \dim_max:nn { \l__xdu_loft_label_num_dim } { #2 } } + } + } +\cs_new:Npn \__xdu_list_of_figure: + { + \__xdu_n_chapter_head_toc:n + { \__xdu_lang_switch:nn { 插图索引 } { List~of~Figures } } + \__xdu_lang_switch:nn { } { \__xdu_add_zh_toc:nn { chapter } { 插图索引 } } + \group_begin: + \addtocontents { lof } { \vspace { 10pt } } + \renewcommand { \addvspace } [1] { } + \tl_set:Nn \cftfigpresnum { \figurename \space } + \dim_zero_new:N \l__xdu_lof_label_dim + \__xdu_get_text_width:NV \l__xdu_lof_label_dim \cftfigpresnum + \dim_set:Nn \cftfignumwidth { \l__xdu_lof_label_dim } + \dim_new:N \l__xdu_lof_label_num_max_dim + \__xdu_loft_label_num_width:nN { lof } \l__xdu_lof_label_num_max_dim + \dim_add:Nn \cftfignumwidth { \l__xdu_lof_label_num_max_dim } + \dim_add:Nn \cftfignumwidth { .75em } + \dim_set:Nn \cftfigindent { 0pt } + \rmfamily \zihao { -4 } \dim_set:Nn \baselineskip { 20pt } + \@starttoc { lof } + \group_end: + \cleardoublepage + } +\cs_new:Npn \__xdu_list_of_table: + { + \__xdu_n_chapter_head_toc:n + { \__xdu_lang_switch:nn { 表格索引 } { List~of~Tables } } + \__xdu_lang_switch:nn { } { \__xdu_add_zh_toc:nn { chapter } { 表格索引 } } + \group_begin: + \addtocontents { lot } { \vspace { 10pt } } + \renewcommand { \addvspace } [1] { } + \tl_set:Nn \cfttabpresnum { \tablename \space } + \dim_zero_new:N \l__xdu_lot_label_dim + \__xdu_get_text_width:NV \l__xdu_lot_label_dim \cfttabpresnum + \dim_set:Nn \cfttabnumwidth { \l__xdu_lot_label_dim } + \dim_new:N \l__xdu_lot_label_num_max_dim + \__xdu_loft_label_num_width:nN { lot } \l__xdu_lot_label_num_max_dim + \dim_add:Nn \cfttabnumwidth { \l__xdu_lot_label_num_max_dim } + \dim_add:Nn \cfttabnumwidth { .75em } + \dim_set:Nn \cfttabindent { 0pt } + \rmfamily \zihao { -4 } \dim_set:Nn \baselineskip { 20pt } + \@starttoc { lot } + \group_end: + \cleardoublepage + } +\ctex_at_end_preamble:n + { + \bool_new:N \l__xdu_load_tabularray_bool + \bool_if:NF \l__xdu_customize_los_bool + { \bool_set_true:N \l__xdu_load_tabularray_bool } + \bool_if:NF \l__xdu_customize_loa_bool + { \bool_set_true:N \l__xdu_load_tabularray_bool } + \bool_if:NT \l__xdu_load_tabularray_bool + { + \RequirePackage { tabularray } + \UseTblrLibrary { functional } + \NewTblrTheme { losloatheme } + { + \DefTblrTemplate { caption-tag } { default } { } + \DefTblrTemplate { caption-sep } { default } { } + \DefTblrTemplate { caption-text } { default } { } + \DefTblrTemplate { conthead-text } { default } { } + \DefTblrTemplate { contfoot-text } { default } { } + } + } + \cs_generate_variant:Nn \__tblr_parse_colrow_spec:nn { nV } + } +\cs_new:Npn \__xdu_symbols_list: + { + \__xdu_n_chapter_head_toc:n + { \__xdu_lang_switch:nn { 符号对照表 } { List~of~Symbols } } + \__xdu_lang_switch:nn { } { \__xdu_add_zh_toc:nn { chapter } { 符号对照表 } } + \bool_if:NTF \l__xdu_customize_los_bool + { \file_if_exist_input:n { \l__xdu_los_str } } + { + \tl_new:N \l__xdu_los_head_tl + \__xdu_lang_switch:nn + { \tl_set:Nn \l__xdu_los_head_tl { 符号 & 符号名称 \\ } } + { \tl_set:Nn \l__xdu_los_head_tl { Notation & Description \\ } } + \tl_new:N \l__xdu_los_rowhead_tl + \bool_if:NTF \l__xdu_title_row_los_bool + { \tl_set:Nn \l__xdu_los_rowhead_tl { 1 } } + { \tl_set:Nn \l__xdu_los_rowhead_tl { 0 } } + \tl_new:N \l__xdu_los_begin_tblr_tl + \tl_set:Nx \l__xdu_los_begin_tblr_tl + { + \exp_not:n + { + \begin { longtblr } + [ + evaluate = \fileIfExistInput, + expand = \l__xdu_los_head_tl, + theme = losloatheme + ] + } + { + colspec = { \exp_not:V \l__xdu_colspec_los_tl }, + \exp_not:n + { + rowhead = \int_compare:nNnTF + { \value { rowcount } } > { 1 } + { \l__xdu_los_rowhead_tl } { 0 }, + rows = { font = \rmfamily \zihao { -4 } }, + stretch = 0, + rowsep = { 3pt }, + rows = { ht = 14pt } + } + } + } + \tl_use:N \l__xdu_los_begin_tblr_tl + \l__xdu_los_head_tl + \fileIfExistInput { \l__xdu_los_str } + \end { longtblr } + } + } +\cs_new:Npn \__xdu_abbreviations_list: + { + \__xdu_n_chapter_head_toc:n + { \__xdu_lang_switch:nn { 缩略语对照表 } { List~of~Abbreviations } } + \__xdu_lang_switch:nn { } { \__xdu_add_zh_toc:nn { chapter } { 缩略语对照表 } } + \bool_if:NTF \l__xdu_customize_loa_bool + { \file_if_exist_input:n { \l__xdu_loa_str } } + { + \tl_new:N \l__xdu_loa_head_tl + \__xdu_lang_switch:nn + { + \tl_set:Nn \l__xdu_loa_head_tl + { 缩略语 & 英文全称 & 中文对照 \\ } + } + { + \tl_set:Nn \l__xdu_loa_head_tl + { Abbreviation & English~Full~Name & Chinese~Full~Name \\ } + } + \tl_new:N \l__xdu_loa_rowhead_tl + \bool_if:NTF \l__xdu_title_row_loa_bool + { \tl_set:Nn \l__xdu_loa_rowhead_tl { 1 } } + { \tl_set:Nn \l__xdu_loa_rowhead_tl { 0 } } + \tl_new:N \l__xdu_loa_begin_tblr_tl + \tl_set:Nx \l__xdu_loa_begin_tblr_tl + { + \exp_not:n + { + \begin { longtblr } + [ + evaluate = \fileIfExistInput, + expand = \l__xdu_loa_head_tl, + theme = losloatheme + ] + } + { + colspec = { \exp_not:V \l__xdu_colspec_loa_tl }, + \exp_not:n + { + rowhead = \int_compare:nNnTF + { \value { rowcount } } > { 1 } + { \l__xdu_loa_rowhead_tl } { 0 }, + rows = { font = \rmfamily \zihao { -4 } }, + stretch = 0, + rowsep = { 3pt }, + rows = { ht = 14pt } + } + } + } + \tl_use:N \l__xdu_loa_begin_tblr_tl + \l__xdu_loa_head_tl + \fileIfExistInput { \l__xdu_loa_str } + \end { longtblr } + } + } +\cs_new:Npn \__xdu_add_zh_toc:nn #1#2 + { + \str_if_eq:NNTF { #1 } { chapter } + { \phantomsection \addcontentsline { zh.toc } { #1 } { \__xdu_sf_family: #2 } } + { \phantomsection \addcontentsline { zh.toc } { #1 } { #2 } } + } \renewcommand { \frontmatter } { \loadgeometry { cover } \pagestyle { empty } + \dim_set:Nn \parindent { 0pt } + \dim_set:Nn \baselineskip { 20pt } + \__xdu_add_bookmark:n { \__xdu_lang_switch:nn { 封面 } { Cover } } + \vbox:n { } + \skip_vertical:n { 435pt } + \vbox_to_ht:nn { 120pt } + { + \rmfamily \zihao { 2 } \bfseries \centering + \dim_set:Nn \baselineskip { 30pt } + \l__xdu_title_str + } + \__xdu_cover_author_info: + \cleardoublepage + \__xdu_lang_switch:nn + { \__xdu_zh_title_page: \__xdu_en_title_page: } + { \__xdu_en_title_page: \__xdu_zh_title_page: } + \__xdu_statement: \__xdu_load_main_geometry: \pagestyle { front } \pagenumbering { Roman } + \dim_set:Nn \baselineskip { 20pt } + \__xdu_lang_switch:nn + { \__xdu_zh_abstract_keywords: \__xdu_en_abstract_keywords: } + { \__xdu_en_abstract_keywords: \__xdu_zh_abstract_keywords: } + \__xdu_list_of_figure: + \__xdu_list_of_table: + \__xdu_symbols_list: + \__xdu_abbreviations_list: + \setcounter { tocdepth } { 2 } + \__xdu_n_chapter_head:nn + { \__xdu_lang_switch:nn { 目录 } { Contents } } + { \__xdu_lang_switch:nn { 目 { \quad } 录 } { Contents } } + \@starttoc { toc } + \cleardoublepage + \__xdu_lang_switch:nn { } + { + \setcounter { tocdepth } { 2 } + \__xdu_n_chapter_head:nn { 目录 } { \__xdu_sf_family: 目 { \quad } 录 } + \@starttoc { zh.toc } + \cleardoublepage + } } \renewcommand { \mainmatter } { \__xdu_load_main_geometry: \pagestyle { plain } \pagenumbering { arabic } + \dim_set:Nn \parindent { 2 \ccwd } + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \__xdu_lang_switch:nn { } + { + \cs_new_eq:NN \__xdu_org_chapter:n \chapter + \RenewDocumentCommand { \chapter } { m m } + { + \__xdu_org_chapter:n { ##1 } + \__xdu_add_zh_toc:nn { chapter } + { \numberline { 第 \chinese { chapter } 章 \hspace { .3em } } ##2 } + } + \cs_new_eq:NN \__xdu_org_section:n \section + \RenewDocumentCommand { \section } { m m } + { + \__xdu_org_section:n { ##1 } + \__xdu_add_zh_toc:nn { section } { \numberline { \thesection } ##2 } + } + \cs_new_eq:NN \__xdu_org_subsection:n \subsection + \RenewDocumentCommand { \subsection } { m m } + { + \__xdu_org_subsection:n { ##1 } + \__xdu_add_zh_toc:nn { subsection } { \numberline { \thesubsection } ##2 } + } + } + } +\ctex_at_end_preamble:n + { + \dim_new:N \l__xdu_bio_indent_dim + \box_new:N \l__xdu_bio_indent_box + \hbox_set:Nn \l__xdu_bio_indent_box { \rmfamily \zihao { -3 } \bfseries 1. \quad} + \dim_set:Nn \l__xdu_bio_indent_dim { \box_wd:N \l__xdu_bio_indent_box } + \bool_if:NF \l__xdu_customize_edubg_bool + { + \RequirePackage { tabularray } + \newenvironment { edubg } + { + \dim_set:Nn \parindent { 0pt } + \begin { tblr } + { + colspec = { @{ \skip_horizontal:N \l__xdu_bio_indent_dim } lX @{ } }, + rows = { font = \zihao { -4 } \dim_set:Nn \baselineskip { 20pt } } + } + } + { + \end { tblr } + \dim_set:Nn \parindent { 2 \ccwd } + } + } + \bool_if:NF \l__xdu_customize_resresult_bool + { + \RequirePackage { enumitem } + \SetEnumitemKey { resresult } + { + label = {[}\arabic*{]}, + left = \l__xdu_bio_indent_dim, + align = right, + parsep = 0pt, + itemsep = 0pt, + topsep = 0pt + } + \newenvironment { resresult } + { \begin { enumerate } [ resresult ] } + { \end { enumerate } } + } + } +\renewcommand { \backmatter } + { + \__xdu_lang_switch:nn { } + { + \cs_set_eq:NN \chapter \__xdu_org_chapter:n + \cs_set_eq:NN \section \__xdu_org_section:n + \cs_set_eq:NN \subsection \__xdu_org_subsection:n + } + \cs_set:Npn \bibname { \__xdu_lang_switch:nn { 参考文献 } { Bibliography } } + \__xdu_n_chapter_head_toc:n { \bibname } + \__xdu_lang_switch:nn { } { \__xdu_add_zh_toc:nn { chapter } { 参考文献 } } + \group_begin: + \tl_if_eq:NnTF \l__xdu_bib_tool_tl { bibtex } + { + \cs_set:Npn \bibsection { } + \rmfamily \zihao { 5 } + \dim_set:Nn \baselineskip { 20pt } + \bibliography { \l__xdu_bib_file_clist } + } + { + \defbibheading { bibliography } [ ] { } + \cs_set:Npn \bibfont + { + \rmfamily \zihao { 5 } + \dim_set:Nn \baselineskip { 20pt } + } + \printbibliography + } + \group_end: + \__xdu_n_chapter_head_toc:nn + { \__xdu_lang_switch:nn { 致谢 } { Acknowledgements } } + { \__xdu_lang_switch:nn { 致 { \quad } 谢 } { Acknowledgements } } + \__xdu_lang_switch:nn { } { \__xdu_add_zh_toc:nn { chapter } { 致谢 } } + \group_begin: + \dim_set:Nn \parindent { 2 \ccwd } + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \file_if_exist_input:n { \l__xdu_ack_tl } + \group_end: + \__xdu_n_chapter_head_toc:n + { \__xdu_lang_switch:nn { 作者简介 } { Author~Biography } } + \__xdu_lang_switch:nn { } { \__xdu_add_zh_toc:nn { chapter } { 作者简介 } } + \group_begin: + \dim_set:Nn \parindent { 2 \ccwd } + \rmfamily \zihao { -4 } + \dim_set:Nn \baselineskip { 20pt } + \ctexset + { + section / number = { \arabic { section } . }, + section / format = { \rmfamily \zihao { -3 } \bfseries \raggedright }, + subsection / number = { \arabic { section } . \arabic { subsection } }, + subsection / format = { \rmfamily \zihao { 4 } \bfseries \raggedright }, + subsection / indent = { \l__xdu_bio_indent_dim } + } + \setcounter { section } { 0 } + \addtocontents { toc } { \setcounter { tocdepth } { 0 } } + \file_if_exist_input:n { \l__xdu_bio_str } + \group_end: } %% %% diff --git a/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls b/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls index 2725418a548..f4b9664ab22 100644 --- a/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls +++ b/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls @@ -28,7 +28,7 @@ \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplClass{xduugthesis} - {2022/05/15}{1.15.0.1} + {2022/06/21}{2.0.0.0} {Xidian University Undergraduate Thesis document class} \RequirePackage { xparse, l3keys2e } \PassOptionsToPackage { quiet } { xeCJK } @@ -304,9 +304,9 @@ \cs_new:Npn \__xdu_set_latin_mono_font:nnnnn #1#2#3#4#5 { \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } - { \setmonofont{ #1 } [ \__xdu_set_latin_scale: \__xdu_off_latin_ligatures: ]} + { \setmonofont { #1 } [ \__xdu_set_latin_scale: \__xdu_off_latin_ligatures: ] } { - \setmonofont{ #2 } + \setmonofont { #2 } [ \__xdu_font_path: \__xdu_set_latin_scale: @@ -332,7 +332,7 @@ } \cs_new:Npn \__xdu_set_latin_mono_font:nnnn #1#2#3#4 { - \setmonofont{ #1 } + \setmonofont { #1 } [ \__xdu_set_latin_scale: \__xdu_off_latin_ligatures: @@ -405,9 +405,9 @@ \cs_new:Npn \__xdu_load_math_font_cambria: { \__xdu_load_unicode_math_pkg: - \str_if_eq:NNTF { \l__xdu_font_type_tl} { font} - { \setmathfont { Cambria~Math} } - { \setmathfont { cambria.ttc} [ Path = \l__xdu_font_path_tl/, FontIndex = 1 ] } + \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } + { \setmathfont { Cambria~Math } } + { \setmathfont { cambria.ttc } [ Path = \l__xdu_font_path_tl/, FontIndex = 1 ] } } \cs_new:Npn \__xdu_define_math_font:nn #1#2 { @@ -461,13 +461,14 @@ \str_new:N \l__xdu_dept_str \str_new:N \l__xdu_major_str \str_new:N \l__xdu_author_str -\str_new:N \l__xdu_supv_str +\clist_new:N \l__xdu_supv_clist \str_new:N \l__xdu_supv_ent_str \str_new:N \l__xdu_student_id_str \tl_new:N \l__xdu_abstract_zh_tl \tl_new:N \l__xdu_abstract_en_tl \clist_new:N \l__xdu_keywords_zh_clist \clist_new:N \l__xdu_keywords_en_clist +\clist_new:N \l__xdu_bib_file_clist \tl_new:N \l__xdu_ack_tl \keys_define:nn { xdu / info } { @@ -475,13 +476,14 @@ department .tl_set:N = \l__xdu_dept_str, major .tl_set:N = \l__xdu_major_str, author .tl_set:N = \l__xdu_author_str, - supervisor .tl_set:N = \l__xdu_supv_str, + supervisor .clist_set:N = \l__xdu_supv_clist, supervisor-enterprise .tl_set:N = \l__xdu_supv_ent_str, student-id .tl_set:N = \l__xdu_student_id_str, abstract .tl_set:N = \l__xdu_abstract_zh_tl, abstract* .tl_set:N = \l__xdu_abstract_en_tl, keywords .clist_set:N = \l__xdu_keywords_zh_clist, keywords* .clist_set:N = \l__xdu_keywords_en_clist, + bib-resource .clist_set:N = \l__xdu_bib_file_clist, acknowledgements .tl_set:N = \l__xdu_ack_tl } \keys_set:nn { xdu } @@ -497,8 +499,16 @@ info / abstract* = { }, info / keywords = { }, info / keywords* = { }, + info / bib-resource = { }, info / acknowledgements = { } } +\str_new:N \l__xdu_supv_str +\str_new:N \l__xdu_supv_ii_str +\ctex_at_end_preamble:n + { + \str_set:Nx \l__xdu_supv_str { \clist_item:Nn \l__xdu_supv_clist { 1 } } + \str_set:Nx \l__xdu_supv_ii_str { \clist_item:Nn \l__xdu_supv_clist { 2 } } + } \str_new:N \l__xdu_supv_dept_str \str_new:N \l__xdu_supv_sch_str \str_new:N \l__xdu_class_id_str @@ -514,10 +524,14 @@ info / supervisor-school = { }, info / class-id = { } } +\cs_set:Npn \figurename { \__xdu_lang_switch:nn { 图 } { Figure } } +\cs_new_eq:NN \figname \figurename +\cs_set:Npn \tablename { \__xdu_lang_switch:nn { 表 } { Table } } +\cs_new_eq:NN \tabname \tablename \bool_new:N \l__xdu_en_cjk_font_bool \tl_new:N \l__xdu_lang_tl \tl_new:N \l__xdu_bib_tool_tl -\clist_new:N \l__xdu_bib_file_clist +\tl_new:N \l__xdu_biblatex_option_tl \tl_new:N \l__xdu_ref_add_space \tl_new:N \l__xdu_cap_label_sep_tl \bool_new:N \l__xdu_tab_small_bool @@ -539,7 +553,7 @@ { \tl_set_eq:NN \l__xdu_lang_tl \l_keys_choice_tl }, bib-backend .choices:nn = { bibtex, biblatex } { \tl_set_eq:NN \l__xdu_bib_tool_tl \l_keys_choice_tl }, - bib-resource .clist_set:N = \l__xdu_bib_file_clist, + biblatex-option .tl_set:N = \l__xdu_biblatex_option_tl, ref-add-space .bool_set:N = \l__xdu_ref_add_space, caption-label-sep .tl_set:N = \l__xdu_cap_label_sep_tl, table-small-font .bool_set:N = \l__xdu_tab_small_bool, @@ -560,7 +574,7 @@ style / en-cjk-font = false, style / language = zh, style / bib-backend = biblatex, - style / bib-resource = { }, + style / biblatex-option = { }, style / ref-add-space = false, style / caption-label-sep = { 0.75em }, style / table-small-font = true, @@ -568,7 +582,7 @@ style / before-skip = { 24pt, 18pt, 12pt, 12pt, 12pt, 12pt }, style / after-skip = { 18pt, 12pt, 6pt, 6pt, 6pt, 6pt }, style / symmetric-margin = false, - style / page-vertical-align = {顶部对齐} + style / page-vertical-align = { 顶部对齐 } } \NewDocumentCommand \xdusetup { m } { \keys_set:nn { xdu } { #1 } } @@ -596,6 +610,20 @@ \str_set_eq:NN \l__xdu_pure_title_str \l__xdu_title_str \str_remove_all:Nn \l__xdu_pure_title_str { \\ } } +\cs_new_protected:Npn \__xdu_split_title:Nn #1#2 + { + \seq_new:N \l__xdu_title_seq + \tl_if_in:nnTF { #2 } { \\ } + { + \seq_set_split:Nnn \l__xdu_title_seq { \\ } { #2 } + \clist_set_from_seq:NN #1 \l__xdu_title_seq + } + { + \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 1 } { 14 } } + \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 15 } { -1 } } + } + } +\cs_generate_variant:Nn \__xdu_split_title:Nn { NV } \cs_new:Npn \__xdu_uline:n #1 { \CJKunderline [ thickness = 0.5pt ] { #1 } } \cs_new:Npn \__xdu_tl_set_if_empty:Nn #1#2 @@ -623,10 +651,10 @@ } \cs_new:Npn \__xdu_n_chapter_head_ii:nn #1#2 { - { + \group_begin: \ctexset { chapter / format = { #2 } } \__xdu_n_chapter_head:n { #1 } - } + \group_end: } \cs_new:Npn \__xdu_n_chapter_head:nn #1#2 { @@ -636,10 +664,10 @@ } \cs_new:Npn \__xdu_n_chapter_head_ii:nnn #1#2#3 { - { + \group_begin: \ctexset { chapter / format = { #3 } } \__xdu_n_chapter_head:nn { #1 } { #2 } - } + \group_end: } \cs_new:Npn \__xdu_n_chapter_head_toc:n #1 { @@ -653,13 +681,20 @@ \chapter* { #2 } \markboth { #1 } { } } +\cs_new:Npn \__xdu_n_chapter_head_toc_ii:nn #1#2 + { + \group_begin: + \ctexset { chapter / format = { #2 } } + \__xdu_n_chapter_head_toc:n { #1 } + \group_end: + } \cs_new:Npn \__xdu_typeout_keywords:nNn #1#2#3 { - \str_clear_new:N \l__xdu_keywords_label_str - \str_set:Nn \l__xdu_keywords_label_str { #1 } + \tl_clear_new:N \l__xdu_keywords_label_str + \tl_set:Nn \l__xdu_keywords_label_tl { #1 } \dim_zero_new:N \l__xdu_keywords_label_dim - \__xdu_get_text_width:NV \l__xdu_keywords_label_dim \l__xdu_keywords_label_str - \begin { list } { \l__xdu_keywords_label_str } + \__xdu_get_text_width:NV \l__xdu_keywords_label_dim \l__xdu_keywords_label_tl + \begin { list } { \l__xdu_keywords_label_tl } { \labelwidth \l__xdu_keywords_label_dim \labelsep \c_zero_dim @@ -669,6 +704,14 @@ \item \clist_use:Nnnn #2 { #3 } { #3 } { #3 } \end { list } } +\dim_new:N \l__xdu_str_dim +\box_new:N \l__xdu_str_box +\cs_new:Npn \__xdu_str_max_dim:Nn #1#2 + { + \hbox_set:Nn \l__xdu_str_box { #2 } + \dim_set:Nn \l__xdu_str_dim { \box_wd:N \l__xdu_str_box } + \dim_set:Nn #1 { \dim_max:nn { \l__xdu_str_dim } { #1 } } + } \NewDocumentCommand \noauxwrite { m } { \if@filesw @@ -996,6 +1039,7 @@ { \captionsetup [ subfloat ] { subrefformat = parens } } { } } +\PassOptionsToPackage { labelformat = simple } { subcaption } \ctex_at_end_preamble:n { \@ifpackageloaded { subcaption } @@ -1040,7 +1084,7 @@ } { } } -\RequirePackage{ hyperref } +\RequirePackage { hyperref } \hypersetup { bookmarksnumbered, @@ -1095,6 +1139,7 @@ { \group_begin: \citestyle { numbers } \cite { #1 } \group_end: } } { + \PassOptionsToPackage { \l__xdu_biblatex_option_tl } { biblatex } \RequirePackage { biblatex } \clist_map_inline:Nn \l__xdu_bib_file_clist { \addbibresource { #1 } } } @@ -1168,20 +1213,6 @@ \hfil } } -\cs_new_protected:Npn \__xdu_split_title:Nn #1#2 - { - \seq_new:N \l__xdu_title_seq - \tl_if_in:nnTF { #2 } { \\ } - { - \seq_set_split:Nnn \l__xdu_title_seq { \\ } { #2 } - \clist_set_from_seq:NN #1 \l__xdu_title_seq - } - { - \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 1 } { 14 } } - \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 15 } { -1 } } - } - } -\cs_generate_variant:Nn \__xdu_split_title:Nn { NV } \bool_new:N \l__xdu_is_ent_bool \bool_new:N \l__xdu_is_wide_bool \ctex_at_end_preamble:n @@ -1236,7 +1267,7 @@ \__xdu_cover_iii:nnnn { 校外导师姓名 } { rm } { -3 } { \l__xdu_supv_ent_str } \__xdu_cover_iii:nnnn { 校内导师姓名 } { rm } { -3 } { \l__xdu_supv_sch_str } } - { + \group_begin: \__xdu_cover_iii:nnnn { 导师姓名 } { rm } { -3 } { \l__xdu_supv_str } \tl_if_blank:VF \l__xdu_supv_dept_str { @@ -1246,7 +1277,7 @@ { -3 } { \l__xdu_supv_dept_str } } - } + \group_end: \cleardoublepage \__xdu_load_main_geometry: \pagestyle { plain } @@ -1259,30 +1290,30 @@ { 摘 { \quad } 要 } { \__xdu_sf_family: \zihao { 3 } \centering } } - { + \group_begin: \dim_set:Nn \parindent { 2 \ccwd } \rmfamily \zihao { -4 } \file_if_exist_input:n { \l__xdu_abstract_zh_tl } - } - \cs_new:Npn \__xdu_keywords_space: { \hspace{ 2em plus 1em minus 1em } } - { + \group_end: + \cs_new:Npn \__xdu_keywords_space: { \hspace { 2em plus 1em minus 1em } } + \group_begin: \sffamily \zihao { -4 } \par \__xdu_typeout_keywords:nNn { 关键词: } { \l__xdu_keywords_zh_clist } { \__xdu_keywords_space: } - } + \group_end: \cleardoublepage \__xdu_n_chapter_head_ii:nn { ABSTRACT } { \rmfamily \zihao { 3 } \bfseries \centering } - { + \group_begin: \dim_set:Nn \parindent { 2 \ccwd } \rmfamily \zihao { -4 } \file_if_exist_input:n { \l__xdu_abstract_en_tl } - } - { + \group_end: + \group_begin: \rmfamily \zihao { -4 } \bfseries \par \__xdu_typeout_keywords:nNn { Keywords: } { \l__xdu_keywords_en_clist } { \__xdu_keywords_space: } - } + \group_end: \cleardoublepage \setcounter { tocdepth } { 5 } \__xdu_n_chapter_head:nn @@ -1304,14 +1335,14 @@ \__xdu_n_chapter_head_toc:nn { \__xdu_lang_switch:nn { 致谢 } { Acknowledgements } } { \__xdu_lang_switch:nn { 致 { \quad } 谢 } { Acknowledgements } } - { + \group_begin: \dim_set:Nn \parindent { 2 \ccwd } \rmfamily \zihao { -4 } \file_if_exist_input:n { \l__xdu_ack_tl } - } + \group_end: \cs_set:Npn \bibname { \__xdu_lang_switch:nn { 参考文献 } { Bibliography } } \__xdu_n_chapter_head_toc:n { \bibname } - { + \group_begin: \tl_if_eq:NnTF \l__xdu_bib_tool_tl { bibtex } { \cs_set:Npn \bibsection { } @@ -1323,7 +1354,7 @@ \cs_set:Npn \bibfont { \__xdu_rm_family: \zihao { 5 } } \printbibliography } - } + \group_end: } %% %% -- cgit v1.2.3