texlive[65556] Master/texmf-dist: xduts (16jan23)

commits+karl at tug.org commits+karl at tug.org
Mon Jan 16 22:10:00 CET 2023


Revision: 65556
          http://tug.org/svn/texlive?view=revision&revision=65556
Author:   karl
Date:     2023-01-16 22:10:00 +0100 (Mon, 16 Jan 2023)
Log Message:
-----------
xduts (16jan23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/xelatex/xduts/README.md
    trunk/Master/texmf-dist/doc/xelatex/xduts/xduts.pdf
    trunk/Master/texmf-dist/source/xelatex/xduts/xduts.dtx
    trunk/Master/texmf-dist/source/xelatex/xduts/xduts.ins
    trunk/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty
    trunk/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls
    trunk/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/xelatex/xduts/xduugtp.cls

Modified: trunk/Master/texmf-dist/doc/xelatex/xduts/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xduts/README.md	2023-01-16 00:49:12 UTC (rev 65555)
+++ trunk/Master/texmf-dist/doc/xelatex/xduts/README.md	2023-01-16 21:10:00 UTC (rev 65556)
@@ -7,12 +7,12 @@
 XDUTS currently includes:
 
 - `xdufont.sty`, Xidian University Font package
+- `xduugtp.cls`, Xidian University Undergraduate Thesis Proposal document class
 - `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
 
 ## Preparation

Modified: trunk/Master/texmf-dist/doc/xelatex/xduts/xduts.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/xelatex/xduts/xduts.dtx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xduts/xduts.dtx	2023-01-16 00:49:12 UTC (rev 65555)
+++ trunk/Master/texmf-dist/source/xelatex/xduts/xduts.dtx	2023-01-16 21:10:00 UTC (rev 65556)
@@ -1,15 +1,17 @@
 % \iffalse
 %<*driver>
 \ProvidesFile{xduts.dtx}
-[2022/12/11 v4.0.1.0 Xidian University TeX Suite]
+[2023/01/16 v4.1.1.0 Xidian University TeX Suite]
 %</driver>
 %<class|sty>\NeedsTeXFormat{LaTeX2e}
 %<class|sty>\RequirePackage{expl3}
 %<xdufont>\ProvidesExplPackage{xdufont}
+%<xduugtp>\ProvidesExplClass{xduugtp}
 %<xdupgthesis>\ProvidesExplClass{xdupgthesis}
 %<xduugthesis>\ProvidesExplClass{xduugthesis}
-%<class|sty>  {2022/12/11}{4.0.1.0}
+%<class|sty>  {2023/01/16}{4.1.1.0}
 %<xdufont>  {Xidian University Font package}
+%<xduugtp>  {Xidian University Undergraduate Thesis Proposal class}
 %<xdupgthesis>  {Xidian University Postgraduate Thesis document class}
 %<xduugthesis>  {Xidian University Undergraduate Thesis document class}
 %<*driver>
@@ -187,7 +189,7 @@
 % \clearpage
 % \begin{documentation}
 % \changes{v2.12.1.1}{2022/07/28}{使用\clsx{l3doc}文档和实现环境}
-% \section*{\contentsname\markright{目录}}
+% \section*{\contentsname\markright{\contentsname}}
 % \makeatletter
 % \@starttoc{toc}
 % \makeatother
@@ -199,13 +201,13 @@
 % 而编写的\LaTeXiii{}文档类和宏包套装,目前有:
 % \begin{itemize}
 % \item \pkgx{xdufont.sty},中/英/数学字体配置宏包。
+% \item \clsx{xduugtp.cls},本科生毕业设计论文开题报告文档类。
 % \item \clsx{xdupgthesis.cls},研究生学位论文文档类。
-% \item \clsx{xduugthesis.cls},本科毕业设计论文文档类。
+% \item \clsx{xduugthesis.cls},本科生毕业设计论文文档类。
 % \end{itemize}
 % 即将支持:
 % \begin{itemize}
-% \item \clsx{xdupgtp.cls},研究生学位论文开题报告表文档类。
-% \item \clsx{xduugtp.cls},本科毕业设计论文开题报告表文档类。
+% \item \clsx{xdupgtp.cls},研究生学位论文开题报告文档类。
 % \end{itemize}
 % \par
 % \changes{v1.2.0.1}{2022/04/19}{增加GitHub Discussions}
@@ -250,6 +252,35 @@
 % \end{lstlisting}
 % \par
 % 学会以上用法后即可使用\pkgx{xdufont}宏包。
+% \subsection{\pkgx{xduugtp}文档类}
+% \pkgx{xduugtp}文档类基于\clsx{ctexart}文档类,
+% 提供多种字体配置,信息录入便捷。
+% 请在阅读《西安电子科技大学本科毕设设计(论文)开题报告》后再使用\pkgx{xduugtp}文档类。
+% \par
+% 使用\clsx{xduugtp}文档类的最小示例如下所示:
+% \begin{lstlisting}
+% \documentclass{xduugtp}
+% \xdusetup{}
+% \begin{document}
+% \section{论文名称及项目来源}
+% \section{研究目的和意义}
+% \section{国内外研究现状和发展趋势}
+% \section{主要研究内容、要解决的问题及本文的初步方案}
+% \section{工作的主要阶段、进度和完成时间}
+% \section{已进行的前期准备工作}
+% \section{指导教师意见}
+% \section{学院审核意见}
+% \end{document}
+% \end{lstlisting}
+% \par
+% \secrefx{编译}介绍了如何编译,
+% \secrefx{参考文献引用}介绍了如何引用参考文献,
+% \secrefx{参数设置}介绍了如何自定义配置。
+% 其中,字体选项见\secrefx{字体选项},
+% 参考文献配置见\secrefx{参考文献配置},
+% 支持的信息录入选项见\secrefx{信息录入}。
+% \par
+% 学会以上用法后即可使用\clsx{xduugtp}文档类。
 % \changes{v1.4.0.0}{2022/04/26}{新增研究生学位论文}
 % \changes{v1.30.0.2}{2022/06/20}{研究生学位论文文档}
 % \changes{v2.2.1.1}{2022/06/23}{移除研究生学位论文中关于章节配置的文档}
@@ -329,7 +360,7 @@
 % \changes{v1.3.0.1}{2022/04/20}{增加兼容性说明}
 % \section{兼容性说明}
 % \label{兼容性说明}
-% \xduts{}对部分常见宏包进行了针对性地适配,
+% \pkgx{xduugthesis}和\pkgx{xduugthesis}文档类对部分常见宏包进行了针对性地适配,
 % 需要注意的是,这些宏包仍需用户视需求自行加载。
 % \subsection{算法}
 % 主要适配算法内容字号和默认浮动位置。
@@ -347,6 +378,9 @@
 % 包括所有使用\envx{table}浮动体的表格、
 % \pkgx{tabularray}宏包提供的\envx{tblr}、\envx{longtblr}环境
 % 和\pkgx{longtable}宏包提供的\envx{longtable}环境。
+% \changes{v4.1.1.0}{2023/01/16}{适配子表样式}
+% 以及适配子表caption字体字号和子表引用样式,
+% 包括\pkgx{subfig}宏包和\pkgx{subcaption}宏包。
 % \changes{v4.0.0.1}{2022/12/11}{增加使用建议}
 % \section{使用建议}
 % \label{使用建议}
@@ -456,7 +490,7 @@
 % row{odd[3-Z]}  = {gray9!40},
 % cell{1}{2}     = {c=2}{},
 % cell{1}{1,4,5} = {r=2}{},
-% row{1-2}         = {cmd=\strong}
+% row{1-2}       = {cmd=\strong}
 % }
 % 选项名称   & 罗马族         &                & 无衬线族          & 打字机族       \\
 %            & 直立/倾斜形状  & 意大利形状     &                   &                \\
@@ -631,9 +665,6 @@
 % }
 % \end{lstlisting}
 % \end{function}
-% \begin{function}[added=2022-04-02]{style/bib-resource}
-% 已弃用,请使用\secrefx{信息录入}中的\optx{info/bib-resource}。
-% \end{function}
 % \subsection{页面配置}
 % \label{页面配置}
 % \begin{function}[added=2022-04-12]{style/symmetric-margin}
@@ -701,13 +732,6 @@
 %   \end{syntax}
 % 设置图、表、算法标签与后面标题之间的间距,默认值为\valuex{0.75em}。
 % \end{function}
-% \changes{v2.17.0.0}{2022/11/28}{设置图、表、算法caption格式}
-% \begin{function}[added=2022-11-28]{style/caption-format}
-% 已弃用。
-% \end{function}
-% \begin{function}[added=2022-04-03]{style/fig-label-sep}
-% 已弃用。
-% \end{function}
 % \subsection{图表配置}
 % \label{图表配置}
 % \changes{v3.0.0.0}{2022/12/03}{设置图表caption格式}
@@ -800,9 +824,6 @@
 %   \item[false] 不增加。
 % \end{optdesc}
 % \end{function}
-% \begin{function}[added=2022-11-29]{style/algorithm-caption-align}
-% 已弃用。
-% \end{function}
 % \subsection{章节配置}
 % \label{章节配置}
 % \begin{function}[added=2022-04-05]{style/before-skip}
@@ -970,12 +991,6 @@
 % \end{resresult}
 % \end{lstlisting}
 % \end{optdesc}
-% \subsection{附录环境}
-% \label{附录环境}
-% \changes{v1.29.0.0}{2022/06/19}{研究生学位论文附录环境}
-% \begin{function}[added=2022-04-04,updated=2022-06-19]{appendixes}
-% 已弃用。
-% \end{function}
 % \subsection{信息录入}
 % \label{信息录入}
 % \changes{v2.18.1.0}{2022/12/01}{增加专业博士校外导师和英文学位类别信息录入}
@@ -991,60 +1006,69 @@
 % ]
 % {
 % width          = \linewidth,
-% colspec        = lX[c]X[c]X[c]X[c]X[c]X[c],
-% cell{1}{1}     = {r=2}{},
-% cell{1}{2,4,6} = {c=2}{},
-% hline{1,Z}     = {.08em},
-% hline{2}       = {2-3}{.08em,leftpos=-1,rightpos=-1,endpos},
-% hline{2}       = {4-5}{.08em,leftpos=-1,rightpos=-1,endpos},
-% hline{2}       = {6-7}{.08em,leftpos=-1,rightpos=-1,endpos},
-% hline{3}       = {.08em},
-% row{odd[3-Z]}  = {gray9!40},
-% cell{3-Z}{1}   = {cmd=\texttt},
-% rowhead        = 2
+% colspec        = lX[c]X[c]X[c]X[c]X[c]X[c]X[c],
+% cell{1}{3}     = {c=2}{},
+% cell{1}{5}     = {c=4}{},
+% cell{2}{2}     = {r=2}{},
+% cell{2}{3,5,7} = {c=2}{},
+% hline{1,4,Z}   = {.08em},
+% hline{2}       = {2-2}{.08em,leftpos=-1,rightpos=-1,endpos},
+% hline{2}       = {3-4}{.08em,leftpos=-1,rightpos=-1,endpos},
+% hline{2}       = {5-8}{.08em,leftpos=-1,rightpos=-1,endpos},
+% hline{3}       = {3-4}{.08em,leftpos=-1,rightpos=-1,endpos},
+% hline{3}       = {5-6}{.08em,leftpos=-1,rightpos=-1,endpos},
+% hline{3}       = {7-8}{.08em,leftpos=-1,rightpos=-1,endpos},
+% row{odd[4-Z]}  = {gray9!40},
+% cell{4-Z}{1}   = {cmd=\texttt},
+% rowhead        = 3
 % }
-%                              & 本科   &        & 硕士   &        & 博士   &        \\
-%                              & 校内   & 校外   & 学术   & 专业   & 学术   & 专业   \\
-% graduate-type                &        &        & \cmark & \cmark & \cmark & \cmark \\
-% degree-type                  &        &        & \cmark & \cmark & \cmark & \cmark \\
-% degree                       &        &        & \cmark & \cmark & \cmark & \cmark \\
-% degree*                      &        &        &        & \cmark &        & \cmark \\
-% title                        & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
-% title*                       &        &        & \cmark & \cmark & \cmark & \cmark \\
-% department                   & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
-% major                        & \cmark & \cmark & \cmark &        & \cmark &        \\
-% major*                       &        &        & \cmark &        & \cmark &        \\
-% sub-major                    &        &        & \cmark &        & \cmark &        \\
-% domain                       &        &        &        & \cmark &        & \cmark \\
-% author                       & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
-% author*                      &        &        & \cmark & \cmark & \cmark & \cmark \\
-% supervisor                   & \cmark &        & \cmark & \cmark & \cmark & \cmark \\
-% supervisor*                  &        &        & \cmark & \cmark & \cmark & \cmark \\
-% supervisor-department        & \cmark &        &        &        &        &        \\
-% supervisor-enterprise        &        & \cmark &        & \cmark &        & \cmark \\
-% supervisor-enterprise*       &        &        &        & \cmark &        & \cmark \\
-% supervisor-school            &        & \cmark &        &        &        &        \\
-% supervisor-title             &        &        & \cmark & \cmark & \cmark & \cmark \\
-% supervisor-title*            &        &        & \cmark & \cmark & \cmark & \cmark \\
-% supervisor-enterprise-title  &        &        &        & \cmark &        & \cmark \\
-% supervisor-enterprise-title* &        &        &        & \cmark &        & \cmark \\
-% class-id                     & \cmark & \cmark &        &        &        &        \\
-% 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 \\
-% statement-scan               &        &        & \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 \\
-% appendix                     & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
-% acknowledgements             & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
-% bio                          &        &        & \cmark & \cmark & \cmark & \cmark \\
+%                              & 开题   & 毕业设计 &        & 学位论文 &        &        &        \\
+%                              & 本科   & 本科     &        & 硕士     &        & 博士   &        \\
+%                              &        & 校内     & 校外   & 学术     & 专业   & 学术   & 专业   \\
+% graduate-type                &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
+% degree-type                  &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
+% degree                       &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
+% degree*                      &        &          &        &          & \cmark &        & \cmark \\
+% title                        &        & \cmark   & \cmark & \cmark   & \cmark & \cmark & \cmark \\
+% title*                       &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
+% department                   & \cmark & \cmark   & \cmark & \cmark   & \cmark & \cmark & \cmark \\
+% major                        & \cmark & \cmark   & \cmark & \cmark   &        & \cmark &        \\
+% major*                       &        &          &        & \cmark   &        & \cmark &        \\
+% sub-major                    &        &          &        & \cmark   &        & \cmark &        \\
+% domain                       &        &          &        &          & \cmark &        & \cmark \\
+% author                       & \cmark & \cmark   & \cmark & \cmark   & \cmark & \cmark & \cmark \\
+% author*                      &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
+% supervisor                   & \cmark & \cmark   &        & \cmark   & \cmark & \cmark & \cmark \\
+% supervisor*                  &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
+% supervisor-department        &        & \cmark   &        &          &        &        &        \\
+% supervisor-enterprise        &        &          & \cmark &          & \cmark &        & \cmark \\
+% supervisor-enterprise*       &        &          &        &          & \cmark &        & \cmark \\
+% supervisor-school            &        &          & \cmark &          &        &        &        \\
+% supervisor-title             &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
+% supervisor-title*            &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
+% supervisor-enterprise-title  &        &          &        &          & \cmark &        & \cmark \\
+% supervisor-enterprise-title* &        &          &        &          & \cmark &        & \cmark \\
+% class                        & \cmark &          &        &          &        &        &        \\
+% class-id                     &        & \cmark   & \cmark &          &        &        &        \\
+% student-id                   & \cmark & \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 & \cmark \\
+% statement-scan               &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
+% statement-sign               &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
+% sign                         & \cmark &          &        &          &        &        &        \\
+% date                         & \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 & \cmark \\
+% appendix                     &        & \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}
@@ -1154,6 +1178,12 @@
 %   \end{syntax}
 % 设置校外导师职称。
 % \end{function}
+% \begin{function}[added=2022-12-31]{info/class}
+%   \begin{syntax}
+%     \optx{info/class}=\argx{界}
+%   \end{syntax}
+% 设置界,即毕业年份。
+% \end{function}
 % \begin{function}[added=2022-04-01]{info/class-id}
 %   \begin{syntax}
 %     \optx{info/class-id}=\argx{作者班级号}
@@ -1185,11 +1215,12 @@
 % 设置保密年限,仅在\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{function}[added=2022-05-03,updated=2022-12-31]{info/submit-date}
 %   \begin{syntax}
 %     \optx{info/submit-date}=\argx{yyyy-mm}
+%     \optx{info/submit-date}=\argx{yyyy-mm-dd}
 %   \end{syntax}
-% 设置提交日期,如果留空,则自动使用编译当天年份和月份。
+% 设置提交日期,如果留空,则自动使用编译当天日期。
 % \end{function}
 % \changes{v2.1.0.0}{2022/06/22}{声明页扫描文件路径}
 % \begin{function}[added=2022-06-22]{info/statement-scan}
@@ -1214,6 +1245,27 @@
 %   \item[文件路径5] 关于论文使用授权的说明导师签名文件路径。
 %   \item[文件路径6] 关于论文使用授权的说明日期文件路径。
 % \end{optdesc}
+% \begin{function}[added=2022-12-31]{info/sign}
+%   \begin{syntax}
+%     \optx{info/sign}=\argx{文件路径1,文件路径2}
+%   \end{syntax}
+% 设置开题报告签名文件路径。
+% 文件支持格式与\tnx{includegraphics}一致,建议文件为透明背景且仅有黑色,并尽量减少边距。
+% \end{function}
+% \begin{optdesc}
+%   \item[文件路径1] 指导教师意见签名文件路径。
+%   \item[文件路径2] 学院审核意见签名文件路径。
+% \end{optdesc}
+% \begin{function}[added=2022-12-31]{info/date}
+%   \begin{syntax}
+%     \optx{info/date}=\argx{日期1,日期2}
+%   \end{syntax}
+% 设置开题报告签名日期,格式为\argx{yyyy-mm-dd},如果留空,则自动使用编译当天日期。
+% \end{function}
+% \begin{optdesc}
+%   \item[日期1] 指导教师意见签名日期。
+%   \item[日期2] 学院审核意见签名日期。
+% \end{optdesc}
 % \begin{function}[added=2022-04-02]{info/abstract,info/abstract*}
 %   \begin{syntax}
 %     \optx{info/abstract}=\argx{中文摘要文件路径}
@@ -1659,13 +1711,19 @@
 % 和《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}、\filex{fduthesis.dtx}、\filex{njuthesis.dtx}和\filex{thuthesis.dtx}。
+% \changes{v4.0.1.1}{2022/12/12}{增加支付宝红包二维码}
 % \changes{v3.1.1.3}{2022/12/10}{二维码增加图标}
 % \changes{v3.1.1.2}{2022/12/06}{增加QQ支付二维码}
 % \changes{v2.16.1.2}{2022/11/27}{修正文档中图片引用间距}
 % \changes{v2.15.0.1}{2022/11/26}{增加赞助二维码}
 % \section{赞助}
-% 如果觉得\xduts{}对您有所帮助,可以扫描\figrefx{fig:zanzhu}中的二维码来赞助\xduts{},赞助主要用于给作者补充营养。
+% 如果\xduts{}对您有所帮助,
+% 可以扫描\figrefx{fig:zanzhu}中的二维码来赞助\xduts{}。
 % \ExplSyntaxOn
+% \str_set_convert:Nnnn \l_xduts_alipay_red_packet_qr_str {%
+% 68747470733A2F2F71722E616C697061792E636F6D2F31317731333035336232617236757438%
+% 71386C6A323062} { utf8/hex } { }
+% \newcommand{\alipayredpacketqr}{\str_use:N \l_xduts_alipay_red_packet_qr_str}
 % \str_set_convert:Nnnn \l_xduts_alipay_qr_str {%
 % 68747470733A2F2F71722E616C697061792E636F6D2F666B7831353935393164716575747463%
 % 77626175726235} { utf8/hex } { }
@@ -1682,18 +1740,20 @@
 % 266E3D4361726F6C26663D77616C6C6574 } { utf8/hex } { }
 % \newcommand{\qqqr}{\str_use:N \l_xduts_qq_qr_str}
 % \ExplSyntaxOff
+% \definecolor{alipayredpacketc}{RGB}{198,48,56}
 % \definecolor{alipayc}{RGB}{22,120,255}
 % \definecolor{weixinc}{RGB}{7,193,96}
 % \definecolor{qqc}{RGB}{18,184,246}
 % \NewDocumentCommand{\qrcodex}{mmm}{
 % \begin{tikzpicture}
-% \node at (0,0) {\textcolor{#3!30}{\qrcode[height=4cm]{#1}}};
-% \node at (current bounding box.center) {\textcolor{#3}{\scalebox{3}{\faIcon{#2}}}};
+% \node at (0,0) {\textcolor{#3!30}{\qrcode[height=.21\textwidth]{#1}}};
+% \node at (current bounding box.center) {\textcolor{#3}{\scalebox{2.1}{\faIcon{#2}}}};
 % \end{tikzpicture}
 % }
 % \begin{figure}[htbp]
 % \centering
 % \mbox{}\hfill
+% \subcaptionbox{扫码领红包}{\qrcodex{\alipayredpacketqr}{alipay}{alipayredpacketc}}\hfill
 % \subcaptionbox{支付宝}{\qrcodex{\alipayqr}{alipay}{alipayc}}\hfill
 % \subcaptionbox{微信支付}{\qrcodex{\wxpqr}{weixin}{weixinc}}\hfill
 % \subcaptionbox{QQ支付}{\qrcodex{\qqqr}{qq}{qqc}}
@@ -1733,7 +1793,7 @@
 % \changes{v0.3.2.0}{2022/04/04}{修正行间距为1.5倍}
 % \changes{v1.8.1.0}{2022/05/03}{修正页面尺寸}
 % \changes{v1.9.2.0}{2022/05/04}{修正行间距为1.625倍}
-% 加载\clsx{ctexbook}文档类。
+% 加载\clsx{ctexbook}或\clsx{ctexart}文档类。
 % \\
 % \LaTeX{}中基本行距是字号大小的1.2倍,Microsoft Word中基本行距是字号大小的1.3倍,
 % Microsoft Word中1.5倍行距,相当于LaTeX中$1.5\times\frac{1.3}{1.2}=1.625$倍行距。
@@ -1746,8 +1806,10 @@
 %<xduugthesis>    linespread = 1.625,
     fontset    = none
   }
-  { ctexbook }
-\LoadClass { ctexbook }
+%<thesis>  { ctexbook }
+%<tp>  { ctexart }
+%<thesis>\LoadClass { ctexbook }
+%<tp>\LoadClass { ctexart }
 %    \end{macrocode}
 % \end{macro}
 % 设置纸张尺寸为A4。
@@ -2562,7 +2624,7 @@
 % \end{macro}
 %    \begin{macrocode}
 %</class|xdufont>
-%<*thesis>
+%<*thesis|tp>
 %    \end{macrocode}
 % \subsection{信息录入}
 % \changes{v1.8.0.0}{2022/05/02}{拆分信息录入选项}
@@ -2748,7 +2810,72 @@
 %    \end{macrocode}
 % \end{variable}
 %    \begin{macrocode}
-%</thesis>
+%</thesis|tp>
+%<*xduugtp>
+%    \end{macrocode}
+% \subsubsection{本科生开题报告}
+% \begin{variable}
+%   {
+%     \l_@@_class_str,
+%     \l_@@_submit_date_str,
+%     \l_@@_sign_clist,
+%     \l_@@_date_clist
+%   }
+% 界。
+%    \begin{macrocode}
+\str_new:N \l_@@_class_str
+%    \end{macrocode}
+% 提交日期。
+%    \begin{macrocode}
+\str_new:N \l_@@_submit_date_str
+%    \end{macrocode}
+% 签名文件路径。
+%    \begin{macrocode}
+\clist_new:N \l_@@_sign_clist
+%    \end{macrocode}
+% 签名日期。
+%    \begin{macrocode}
+\clist_new:N \l_@@_date_clist
+%    \end{macrocode}
+% \end{variable}
+% \begin{macro}{\keys_define:nn}
+% 定义信息键值。
+%    \begin{macrocode}
+\keys_define:nn { xdu / info }
+  {
+%    \end{macrocode}
+% 界。
+%    \begin{macrocode}
+    class .tl_set:N = \l_@@_class_str,
+%    \end{macrocode}
+% 提交日期。
+%    \begin{macrocode}
+    submit-date .tl_set:N = \l_@@_submit_date_str,
+%    \end{macrocode}
+% 签名文件路径。
+%    \begin{macrocode}
+    sign .clist_set:N = \l_@@_sign_clist,
+%    \end{macrocode}
+% 签名日期。
+%    \begin{macrocode}
+    date .clist_set:N = \l_@@_date_clist
+  }
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\keys_set:nn}
+% 初始设置。
+%    \begin{macrocode}
+\keys_set:nn { xdu }
+  {
+    info / class       = { },
+    info / submit-date = { },
+    info / sign        = { },
+    info / date        = { }
+  }
+%    \end{macrocode}
+% \end{macro}
+%    \begin{macrocode}
+%</xduugtp>
 %<*xduugthesis>
 %    \end{macrocode}
 % \subsubsection{本科生}
@@ -3286,7 +3413,7 @@
 % \end{macro}
 %    \begin{macrocode}
 %</xdupgthesis>
-%<*thesis>
+%<*thesis|xduugtp>
 %    \end{macrocode}
 % \subsection{标签宏配置}
 % \label{标签宏配置}
@@ -3551,7 +3678,7 @@
 %    \end{macrocode}
 % \end{macro}
 %    \begin{macrocode}
-%</thesis>
+%</thesis|xduugtp>
 %<*xdupgthesis>
 %    \end{macrocode}
 % \changes{v1.22.0.0}{2022/06/05}{对照表样式配置}
@@ -3780,6 +3907,7 @@
   }
 %    \end{macrocode}
 % \end{variable}
+% \changes{v4.0.2.0}{2022/12/26}{移除本科生毕业设计标题自动换行功能}
 % \begin{macro}{\@@_split_title:Nn,\@@_split_title:NV}
 % 拆分标题。
 % \begin{arguments}
@@ -3795,10 +3923,7 @@
         \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 } }
-      }
+      { \clist_set:Nx #1 { #2 } }
   }
 \cs_generate_variant:Nn \@@_split_title:Nn { NV }
 %    \end{macrocode}
@@ -3984,6 +4109,10 @@
   }
 %    \end{macrocode}
 % \end{macro}
+%    \begin{macrocode}
+%</thesis>
+%<*thesis|xduugtp>
+%    \end{macrocode}
 % \begin{macro}{\@@_str_max_dim:Nn}
 % \changes{v1.26.4.0}{2022/06/10}{计算字符串多大长度}
 % 计算字符串多大长度。
@@ -4002,6 +4131,10 @@
   }
 %    \end{macrocode}
 % \end{macro}
+%    \begin{macrocode}
+%</thesis|xduugtp>
+%<*thesis>
+%    \end{macrocode}
 % \subsection{额外命令}
 % \begin{macro}{\noauxwrite}
 % \changes{v1.15.0.0}{2022/05/13}{\tnx{noauxwrite}允许添加不影响现有引用列表顺序的引用}
@@ -4120,6 +4253,32 @@
 %</xdupgthesis>
 %    \end{macrocode}
 % \end{macro}
+%    \begin{macrocode}
+%</thesis>
+%<*tp>
+%    \end{macrocode}
+% \changes{v4.1.0.0}{2022/12/31}{设置本科生毕业设计开题报告页边距}
+% \begin{macro}{\newgeometry,\savegeometry,\loadgeometry}
+% 设置本科生毕业设计开题报告页边距。
+%    \begin{macrocode}
+\newgeometry
+  {
+    left       = 3.17cm,
+    right      = 3.17cm,
+    top        = 2.54cm,
+    bottom     = 2.54cm,
+    footskip   = 0cm,
+    headsep    = 0cm,
+    headheight = 0cm
+  }
+\savegeometry { main }
+\loadgeometry { main }
+%    \end{macrocode}
+% \end{macro}
+%    \begin{macrocode}
+%</tp>
+%<*thesis>
+%    \end{macrocode}
 % \begin{macro}{\@@_load_main_geometry:}
 % \changes{v0.8.0.0}{2022/04/12}{根据用户配置加载正文页边距配置}
 % 根据用户配置加载正文页边距配置。
@@ -5034,11 +5193,11 @@
                     \tl_if_eq:NnTF \l_@@_alg_cap_align_tl { centering }
                       {
                         \parbox { \columnwidth }
-                          { \centering \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2}
+                          { \centering \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2 }
                       }
                       {
                         \parbox { \columnwidth }
-                          { \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2}
+                          { \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2 }
                       }
                   }
               }
@@ -5152,15 +5311,19 @@
 %    \end{macrocode}
 % \end{macro}
 % \begin{macro}{\thesubfigure}
+% \changes{v4.1.1.0}{2023/01/16}{适配子表样式}
 % \changes{v1.13.5.0}{2022/05/08}{设置\pkgx{subcaption}宏包子图引用样式}
 % \changes{v1.20.1.0}{2022/05/30}{修复\pkgx{subcaption}宏包子图标签样式}
-% 设置\pkgx{subcaption}宏包子图引用样式。
+% 设置\pkgx{subcaption}宏包子图子表引用样式。
 %    \begin{macrocode}
 \PassOptionsToPackage { labelformat = simple } { subcaption }
 \ctex_at_end_preamble:n
   {
     \@ifpackageloaded { subcaption }
-      { \cs_set:Npn \thesubfigure { ( \alph { subfigure } ) } }
+      {
+        \cs_set:Npn \thesubfigure { ( \alph { subfigure } ) }
+        \cs_set:Npn \thesubtable  { ( \alph { subtable  } ) }
+      }
       { }
   }
 %    \end{macrocode}
@@ -5223,6 +5386,10 @@
   }
 %    \end{macrocode}
 % \end{macro}
+%    \begin{macrocode}
+%</thesis>
+%<*thesis|tp>
+%    \end{macrocode}
 % \subsection{超链接和PDF元数据}
 % \begin{macro}{\hypersetup}
 % \changes{v0.5.0.0}{2022/04/05}{添加PDF主题元数据}
@@ -5239,7 +5406,9 @@
   {
     \hypersetup
       {
-        pdftitle   = \l_@@_pure_title_str,
+%<thesis>        pdftitle   = \l_@@_pure_title_str,
+%<xduugtp>        pdfsubject = { 西安电子科技大学本科生毕业论文(设计)开题报告 },
+%<xduugtp>        pdfcreator = { XeLaTeX~with~xduugtp~class~in~XDUTS },
 %<xduugthesis>        pdfsubject = { 西安电子科技大学本科毕业设计论文 },
 %<xduugthesis>        pdfcreator = { XeLaTeX~with~xduugthesis~class~in~XDUTS },
 %<xdupgthesis>        pdfsubject = \l_@@_header_str,
@@ -5249,6 +5418,10 @@
   }
 %    \end{macrocode}
 % \end{macro}
+%    \begin{macrocode}
+%</thesis|tp>
+%<*thesis>
+%    \end{macrocode}
 % \subsection{交叉引用}
 % \begin{macro}{\ref,\pageref}
 % \changes{v1.2.0.0}{2022/04/16}{优化中文环境下\tnx{ref}两侧中英文间空白}
@@ -5282,6 +5455,10 @@
   }
 %    \end{macrocode}
 % \end{macro}
+%    \begin{macrocode}
+%</thesis>
+%<*thesis|tp>
+%    \end{macrocode}
 % \subsection{参考文献}
 % \begin{macro}{\@@_begin_document:n}
 % 钩子。
@@ -5345,12 +5522,17 @@
       {
 %<xdupgthesis>        \rmfamily
 %<xduugthesis>        \@@_rm_family:
-        \zihao { 5 }
+%<thesis>        \zihao { 5 }
+%<tp>        \zihao { -4 }
 %<xdupgthesis>        \dim_set:Nn \baselineskip { 20pt }
       }
   }
 %    \end{macrocode}
 % \end{macro}
+%    \begin{macrocode}
+%</thesis|tp>
+%<*thesis>
+%    \end{macrocode}
 % \subsection{附录}
 % \begin{macro}{\@@_appendix:}
 % 附录环境。
@@ -7225,7 +7407,7 @@
 %</xdupgthesis>
 %<*thesis>
 %    \end{macrocode}
-% \section{前言、正文和后记部分}
+% \subsection{前言、正文和后记部分}
 % \changes{v4.0.0.0}{2022/12/11}{本科生毕业设计和研究生学位论文添加前言、正文和后记部分}
 % 本科生毕业设计和研究生学位论文添加前言、正文和后记部分。
 %    \begin{macrocode}
@@ -7234,8 +7416,393 @@
 %    \end{macrocode}
 %    \begin{macrocode}
 %</thesis>
+%<*xduugtp>
 %    \end{macrocode}
+% \changes{v4.1.0.0}{2022/12/31}{新增本科生毕业设计开题报告}
+% \subsection{本科生毕业设计开题报告}
+% \begin{macro}{\tcbset}
+% 自定义线框样式。
 %    \begin{macrocode}
+\PassOptionsToPackage { breakable } { tcolorbox }
+\RequirePackage       { tcolorbox }
+\dim_new:N \l_@@_box_margin_dim
+\dim_set:Nn \l_@@_box_margin_dim { 5pt }
+\dim_new:N \l_@@_box_rule_dim
+\dim_set:Nn \l_@@_box_rule_dim { 0.5pt }
+\tcbset
+  {
+    standard~jigsaw,
+    sharp~corners    = all,
+    colframe         = black,
+    opacityback      = 0,
+    boxsep           = 0pt,
+    boxrule          = \l_@@_box_rule_dim,
+    top              = \l_@@_box_margin_dim,
+    bottom           = \l_@@_box_margin_dim,
+    left             = \l_@@_box_margin_dim,
+    right            = \l_@@_box_margin_dim,
+    beforeafter~skip = 0pt,
+    before~upper     =
+      {
+        \dim_set:Nn \parindent    { 2em  }
+        \dim_set:Nn \baselineskip { 20pt }
+      }
+  }
+\tcbset
+  {
+    tpboxi/.style =
+      {
+        breakable        = true,
+        height~fixed~for = first~and~middle
+      },
+    tpboxii/.style =
+      {
+        breakable        = true,
+        height~fixed~for = all,
+        height~fill      = maximum
+      },
+    tpboxiii/.style =
+      {
+        height           = .5\textheight + .5\l_@@_box_rule_dim,
+        space~to~upper   = true,
+        lower~separated  = false,
+        halign~lower     = flush~right
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{tpbox}
+% 自定义\envx{tpbox}环境,便于实现用户正文输入为空亦可编译。
+%    \begin{macrocode}
+\RequirePackage { graphicx }
+\int_new:N \l_@@_sign_no_int
+\int_set:Nn \l_@@_sign_no_int { 1 }
+\NewDocumentEnvironment { tpbox } { oo }
+  { \IfNoValueF { #1 } { \begin { tcolorbox } [ #1 ] } }
+  {
+    \IfNoValueF { #1 }
+      {
+        \IfNoValueF { #2 }
+          {
+            \tcblower
+            签名
+            \clist_if_empty:NTF \l_@@_sign_clist
+              { \skip_horizontal:n { 6em } \hbox:n { } }
+              {
+                \skip_horizontal:n { 1em }
+                \includegraphics [ width = 10em, height = 25pt, keepaspectratio ]
+                  {
+                    \str_if_eq:nnTF { #2 } { 指导教师意见 }
+                      { \clist_item:Nn \l_@@_sign_clist { 1 } }
+                      { \clist_item:Nn \l_@@_sign_clist { 2 } }
+                  }
+              }
+            \\
+            \clist_if_empty:NTF \l_@@_date_clist
+              { \@@_zh_today: }
+              {
+                \str_if_eq:nnTF { #2 } { 指导教师意见 }
+                  { \clist_item:Nn \l_@@_zh_date_clist { 1 } }
+                  { \clist_item:Nn \l_@@_zh_date_clist { 2 } }
+              }
+          }
+        \end { tcolorbox }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_bib:}
+%    \begin{macrocode}
+\cs_new:Npn \@@_bib:
+  {
+    \cs_set:Npn \bibname { 参考文献 }
+    \subsection* { \bibname }
+    \group_begin:
+      \tl_if_eq:NnTF \l_@@_bib_tool_tl { bibtex }
+        {
+          \dim_set:Nn \labelsep { 1ex }
+          \bibliography { \l_@@_bib_file_clist }
+        }
+        { \printbibliography }
+    \group_end:
+  }
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\section}
+% 重定义\csx{section}命令。
+%    \begin{macrocode}
+\cs_new_eq:NN \@@_org_sec:n \section
+\RenewDocumentCommand \section { m }
+  {
+    \str_case:nnTF { #1 }
+      {
+        { 论文名称及项目来源 }
+          {
+            \end   { tpbox }
+            \begin { tpbox } [tpboxi]
+          }
+        { 研究目的和意义 }
+          {
+            \end   { tpbox }
+            \skip_vertical:n { -\l_@@_box_rule_dim }
+            \skip_vertical:n { \z at skip }
+            \begin { tpbox } [ tpboxii ]
+          }
+        { 国内外研究现状和发展趋势 }
+          {
+            \end   { tpbox }
+            \begin { tpbox } [ tpboxii ]
+          }
+        { 主要研究内容、要解决的问题及本文的初步方案 }
+          {
+            \@@_bib:
+            \end   { tpbox }
+            \begin { tpbox } [ tpboxii ]
+          }
+        { 工作的主要阶段、进度和完成时间 }
+          {
+            \end   { tpbox }
+            \begin { tpbox } [ tpboxi ]
+          }
+        { 已进行的前期准备工作 }
+          {
+            \end   { tpbox }
+            \skip_vertical:n { -\l_@@_box_rule_dim }
+            \skip_vertical:n { \z at skip }
+            \begin { tpbox } [ tpboxii ]
+          }
+        { 指导教师意见 }
+          {
+            \end   { tpbox }
+            \begin { tpbox } [ tpboxiii ] [ 指导教师意见 ]
+          }
+        { 学院审核意见 }
+          {
+            \end   { tpbox }
+            \skip_vertical:n { -\l_@@_box_rule_dim }
+            \skip_vertical:n { \z at skip }
+            \begin { tpbox } [ tpboxiii ] [ 学院审核意见 ]
+          }
+      }
+      { \@@_org_sec:n { #1 } }
+      { }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pagestyle}
+% 移除页码。
+%    \begin{macrocode}
+\pagestyle { empty }
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ctexset}
+% 设置标题样式。
+%    \begin{macrocode}
+\ctexset
+  {
+    section       / name       = { ,、   },
+    subsection    / name       = { (,) },
+    subsubsection / name       = { (,) },
+    section       / number     = { \chinese { section       } },
+    subsection    / number     = { \chinese { subsection    } },
+    subsubsection / number     = { \arabic  { subsubsection } },
+    section       / format     = { \raggedright \zihao { -4 } },
+    subsection    / format     = { \raggedright \zihao { -4 } },
+    subsubsection / format     = { \raggedright \zihao { -4 } },
+    section       / aftername  = { },
+    subsection    / aftername  = { },
+    subsubsection / aftername  = { },
+    section       / beforeskip = { 0pt },
+    subsection    / beforeskip = { 8pt },
+    subsubsection / beforeskip = { 8pt },
+    section       / afterskip  = { 0pt },
+    subsection    / afterskip  = { 0pt },
+    subsubsection / afterskip  = { 0pt },
+    section       / indent     = { 0em },
+    subsection    / indent     = { 0em },
+    subsubsection / indent     = { 2em },
+  }
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_uline:n,\@@_uline:nn}
+% 下划线。
+%    \begin{macrocode}
+\RequirePackage { xeCJKfntef }
+\cs_new:Npn \@@_uline:n #1
+  { \CJKunderline [ thickness = 1pt ] { #1 } }
+\cs_new:Npn \@@_uline:nn #1#2
+  { \CJKunderline [ thickness = 1pt ] { \hbox_to_wd:nn { #1 } { \hfil #2 \hfil } } }
+%    \end{macrocode}
+% \end{macro}
+% \begin{variable}{\l_@@_cover_author_info_dim}
+% 获取封面作者信息最大宽度。
+%    \begin{macrocode}
+\dim_new:N \l_@@_cover_author_info_dim
+\dim_set:Nn \l_@@_cover_author_info_dim { 5em }
+\ctex_at_end_preamble:n
+  {
+    \rmfamily \zihao { -3 }
+    \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_author_str     }
+    \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_major_str      }
+    \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_student_id_str }
+    \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_supv_str       }
+    \dim_add:Nn \l_@@_cover_author_info_dim { 2em }
+  }
+%    \end{macrocode}
+% \end{variable}
+% \begin{macro}{\@@_cover_author_info:nn}
+% 绘制封面作者信息。
+%    \begin{macrocode}
+\cs_new:Npn \@@_cover_author_info:nn #1#2
+  {
+    \vbox_to_ht:nn { 31pt }
+      {
+        \mode_leave_vertical:
+        \hfil
+        \hbox:n
+          {
+            \rmfamily \zihao { -3 }
+            \hbox_to_wd:nn { 4em } { #1 }
+            \skip_horizontal:n { 0.5em }
+            \@@_uline:nn { \l_@@_cover_author_info_dim } { #2 }
+          }
+        \hfil
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \begin{variable}{\l_@@_pure_dept_str}
+% 移除末尾的学院二字。
+%    \begin{macrocode}
+\cs_generate_variant:Nn \str_if_eq:nnTF { xnTF }
+\ctex_at_end_preamble:n
+  {
+    \str_new:N \l_@@_pure_dept_str
+    \str_if_eq:xnTF { \str_range:Nnn \l_@@_dept_str { -2 } { -1 } } { 学院 }
+      { \str_set:Nx \l_@@_pure_dept_str { \str_range:Nnn \l_@@_dept_str { 1 } { -3 } } }
+      { \str_set:NV \l_@@_pure_dept_str \l_@@_dept_str }
+  }
+%    \end{macrocode}
+% \end{variable}
+% \begin{macro}{\@@_zh_today:}
+% 今日年月日。
+%    \begin{macrocode}
+\cs_new:Npn \@@_zh_today:
+  {
+    \int_use:N \c_sys_year_int  年
+    \int_use:N \c_sys_month_int 月
+    \int_use:N \c_sys_day_int   日
+  }
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_split_submit_date:N}
+% 拆分提交日期为年、月和日。
+%    \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 } 月
+        \clist_item:Nn \l_@@_submit_date_clist { 3 } 日
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \begin{variable}
+%   {
+%     \l_@@_zh_date_clist,
+%     \l_@@_zh_date_one_clist,
+%     \l_@@_date_seq
+%   }
+% 格式化开题签名日期。
+%    \begin{macrocode}
+\clist_new:N \l_@@_zh_date_clist
+\clist_new:N \l_@@_zh_date_one_clist
+\seq_new:N \l_@@_date_seq
+\ctex_at_end_preamble:n
+  {
+    \clist_map_inline:Nn \l_@@_date_clist
+      {
+        \seq_set_split:Nnn \l_@@_date_seq { - } { #1 }
+        \clist_set_from_seq:NN \l_@@_zh_date_one_clist \l_@@_date_seq
+        \clist_put_right:Nx \l_@@_zh_date_clist
+          {
+            \clist_item:Nn \l_@@_zh_date_one_clist { 1 } 年
+            \clist_item:Nn \l_@@_zh_date_one_clist { 2 } 月
+            \clist_item:Nn \l_@@_zh_date_one_clist { 3 } 日
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{variable}
+% \begin{macro}{\@@_cover:,\ctex_after_end_preamble:n}
+% 绘制封面。
+%    \begin{macrocode}
+\cs_new:Npn \@@_cover:
+  {
+    \vbox:n { }
+    \skip_vertical:n { -5pt }
+    \vbox_to_ht:nn { 85pt }
+      {
+        \rmfamily \zihao { -2 } \centering
+        西安电子科技大学 \@@_uline:n { \l_@@_pure_dept_str } 学院
+      }
+    \vbox_to_ht:nn { 32.5pt }
+      {
+        \sffamily \zihao { 2 } \centering
+        本科生毕业论文(设计)开题报告
+      }
+    \vbox_to_ht:nn { 171pt }
+      {
+        \CJKfamily+ { sf } \zihao { -3 } \centering
+        (\l_@@_class_str{} 届)
+      }
+    \@@_cover_author_info:nn { 学生姓名 } { \l_@@_author_str     }
+    \@@_cover_author_info:nn { 专业     } { \l_@@_major_str      }
+    \@@_cover_author_info:nn { 学号     } { \l_@@_student_id_str }
+    \@@_cover_author_info:nn { 指导教师 } { \l_@@_supv_str       }
+    \skip_vertical:n { 92pt }
+    \vbox_to_ht:nn { 81.5pt }
+      {
+        \rmfamily \zihao { 4 } \centering
+        \@@_zh_submit_date:
+      }
+    \vbox:n
+      {
+        \rmfamily \zihao { 5 } \centering
+        (本表一式三份,学生、指导教师、学院各一份)
+      }
+  }
+\ctex_after_end_preamble:n { \@@_cover: \clearpage }
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ctex_after_end_preamble:n,\AtEndDocument}
+% 实现用户正文为空可编译。
+%    \begin{macrocode}
+\ctex_after_end_preamble:n { \begin { tpbox } }
+\AtEndDocument             { \end   { tpbox } }
+%    \end{macrocode}
+% \end{macro}
+%    \begin{macrocode}
+%</xduugtp>
+%    \end{macrocode}
+%    \begin{macrocode}
 %<@@=>
 %    \end{macrocode}
 % \end{implementation}

Modified: trunk/Master/texmf-dist/source/xelatex/xduts/xduts.ins
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xduts/xduts.ins	2023-01-16 00:49:12 UTC (rev 65555)
+++ trunk/Master/texmf-dist/source/xelatex/xduts/xduts.ins	2023-01-16 21:10:00 UTC (rev 65556)
@@ -28,6 +28,7 @@
 \generate
   {
     \file{xdufont.sty}{\from{\jobname.dtx}{sty,xdufont}}
+    \file{xduugtp.cls}{\from{\jobname.dtx}{class,tp,xduugtp}}
     \file{xdupgthesis.cls}{\from{\jobname.dtx}{class,thesis,xdupgthesis}}
     \file{xduugthesis.cls}{\from{\jobname.dtx}{class,thesis,xduugthesis}}
   }

Modified: trunk/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty	2023-01-16 00:49:12 UTC (rev 65555)
+++ trunk/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty	2023-01-16 21:10:00 UTC (rev 65556)
@@ -6,7 +6,7 @@
 %%
 %% xduts.dtx  (with options: `sty,xdufont')
 %% 
-%% Copyright 2022--2022 by @note286 in GitHub and CTAN
+%% Copyright 2022--2023 by @note286 in GitHub and CTAN
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either version 1.3
@@ -28,7 +28,7 @@
 \NeedsTeXFormat{LaTeX2e}
 \RequirePackage{expl3}
 \ProvidesExplPackage{xdufont}
-  {2022/12/11}{4.0.1.0}
+  {2023/01/16}{4.1.1.0}
   {Xidian University Font package}
 \RequirePackage { xparse, l3keys2e }
 \PassOptionsToPackage { quiet } { xeCJK }

Modified: trunk/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls	2023-01-16 00:49:12 UTC (rev 65555)
+++ trunk/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls	2023-01-16 21:10:00 UTC (rev 65556)
@@ -6,7 +6,7 @@
 %%
 %% xduts.dtx  (with options: `class,thesis,xdupgthesis')
 %% 
-%% Copyright 2022--2022 by @note286 in GitHub and CTAN
+%% Copyright 2022--2023 by @note286 in GitHub and CTAN
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either version 1.3
@@ -28,7 +28,7 @@
 \NeedsTeXFormat{LaTeX2e}
 \RequirePackage{expl3}
 \ProvidesExplClass{xdupgthesis}
-  {2022/12/11}{4.0.1.0}
+  {2023/01/16}{4.1.1.0}
   {Xidian University Postgraduate Thesis document class}
 \RequirePackage { xparse, l3keys2e }
 \PassOptionsToPackage { quiet } { xeCJK }
@@ -871,10 +871,7 @@
         \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 } }
-      }
+      { \clist_set:Nx #1 { #2 } }
   }
 \cs_generate_variant:Nn \__xdu_split_title:Nn { NV }
 \cs_new:Npn \__xdu_uline:n #1
@@ -1386,11 +1383,11 @@
                     \tl_if_eq:NnTF \l__xdu_alg_cap_align_tl { centering }
                       {
                         \parbox { \columnwidth }
-                          { \centering \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2}
+                          { \centering \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2 }
                       }
                       {
                         \parbox { \columnwidth }
-                          { \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2}
+                          { \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2 }
                       }
                   }
               }
@@ -1471,7 +1468,10 @@
 \ctex_at_end_preamble:n
   {
     \@ifpackageloaded { subcaption }
-      { \cs_set:Npn \thesubfigure { ( \alph { subfigure } ) } }
+      {
+        \cs_set:Npn \thesubfigure { ( \alph { subfigure } ) }
+        \cs_set:Npn \thesubtable  { ( \alph { subtable  } ) }
+      }
       { }
   }
 \ctex_at_end_preamble:n

Modified: trunk/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls	2023-01-16 00:49:12 UTC (rev 65555)
+++ trunk/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls	2023-01-16 21:10:00 UTC (rev 65556)
@@ -6,7 +6,7 @@
 %%
 %% xduts.dtx  (with options: `class,thesis,xduugthesis')
 %% 
-%% Copyright 2022--2022 by @note286 in GitHub and CTAN
+%% Copyright 2022--2023 by @note286 in GitHub and CTAN
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either version 1.3
@@ -28,7 +28,7 @@
 \NeedsTeXFormat{LaTeX2e}
 \RequirePackage{expl3}
 \ProvidesExplClass{xduugthesis}
-  {2022/12/11}{4.0.1.0}
+  {2023/01/16}{4.1.1.0}
   {Xidian University Undergraduate Thesis document class}
 \RequirePackage { xparse, l3keys2e }
 \PassOptionsToPackage { quiet } { xeCJK }
@@ -647,10 +647,7 @@
         \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 } }
-      }
+      { \clist_set:Nx #1 { #2 } }
   }
 \cs_generate_variant:Nn \__xdu_split_title:Nn { NV }
 \cs_new:Npn \__xdu_uline:n #1
@@ -1172,11 +1169,11 @@
                     \tl_if_eq:NnTF \l__xdu_alg_cap_align_tl { centering }
                       {
                         \parbox { \columnwidth }
-                          { \centering \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2}
+                          { \centering \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2 }
                       }
                       {
                         \parbox { \columnwidth }
-                          { \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2}
+                          { \AlCapFnt #1 \algocf at capseparator \AlCapNameFnt #2 }
                       }
                   }
               }
@@ -1257,7 +1254,10 @@
 \ctex_at_end_preamble:n
   {
     \@ifpackageloaded { subcaption }
-      { \cs_set:Npn \thesubfigure { ( \alph { subfigure } ) } }
+      {
+        \cs_set:Npn \thesubfigure { ( \alph { subfigure } ) }
+        \cs_set:Npn \thesubtable  { ( \alph { subtable  } ) }
+      }
       { }
   }
 \ctex_at_end_preamble:n

Added: trunk/Master/texmf-dist/tex/xelatex/xduts/xduugtp.cls
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xduts/xduugtp.cls	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/xelatex/xduts/xduugtp.cls	2023-01-16 21:10:00 UTC (rev 65556)
@@ -0,0 +1,984 @@
+%%
+%% This is file `xduugtp.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xduts.dtx  (with options: `class,tp,xduugtp')
+%% 
+%% Copyright 2022--2023 by @note286 in GitHub and CTAN
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status `author-maintained'.
+%% 
+%% The Current Maintainer of this work is @note286 in GitHub and CTAN.
+%% 
+%% This work consists of the files README.md, xduts.dtx, and xduts.ins
+%% and the derived files xduts.pdf, xdufont.sty, xdupgthesis.cls, and xduugthesis.cls.
+%% 
+%% The copyright of xdulogo.pdf is Xidian University.
+%% 
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{expl3}
+\ProvidesExplClass{xduugtp}
+  {2023/01/16}{4.1.1.0}
+  {Xidian University Undergraduate Thesis Proposal class}
+\RequirePackage { xparse, l3keys2e }
+\PassOptionsToPackage { quiet } { xeCJK }
+\PassOptionsToClass
+  {
+    a4paper,
+    zihao=-4,
+    sub4section,
+    fontset    = none
+  }
+  { ctexart }
+\LoadClass { ctexart }
+\RequirePackage { geometry        }
+\geometry       { paper = a4paper }
+\tl_new:N \l__xdu_cjk_font_tl
+\tl_new:N \l__xdu_fake_bold_tl
+\tl_new:N \l__xdu_fake_slant_tl
+\tl_new:N \l__xdu_latin_font_tl
+\tl_new:N \l__xdu_math_font_tl
+\tl_new:N \l__xdu_unicode_math_tl
+\tl_new:N \l__xdu_font_type_tl
+\tl_new:N \l__xdu_font_path_tl
+\keys_define:nn { xdu / style }
+  {
+    cjk-font .choices:nn =
+      { win, adobe, founder, sinotype, fandol, none }
+      { \tl_set_eq:NN \l__xdu_cjk_font_tl \l_keys_choice_tl },
+    cjk-fake-bold .tl_set:N = \l__xdu_fake_bold_tl,
+    cjk-fake-slant .tl_set:N = \l__xdu_fake_slant_tl,
+    latin-font .choices:nn = { tac, tacn, thcs, gyre, none }
+      { \tl_set_eq:NN \l__xdu_latin_font_tl \l_keys_choice_tl },
+    math-font .choices:nn =
+      {
+        asana, bonum, cambria, cm, concrete, dejavu, erewhon, euler,
+        fira, garamond, gfsneohellenic, kp, libertinus, lm, newcm,
+        pagella, schola, stix, stix2, termes, xcharter, xits, none
+      }
+      { \tl_set_eq:NN \l__xdu_math_font_tl \l_keys_choice_tl },
+    unicode-math .tl_set:N = \l__xdu_unicode_math_tl,
+    font-type .choices:nn = { font, file }
+      { \tl_set_eq:NN \l__xdu_font_type_tl \l_keys_choice_tl },
+    font-path .tl_set:N = \l__xdu_font_path_tl
+  }
+\keys_set:nn { xdu }
+  {
+    style / cjk-font       = fandol,
+    style / cjk-fake-bold  = 3,
+    style / cjk-fake-slant = 0.2,
+    style / latin-font     = gyre,
+    style / math-font      = cm,
+    style / unicode-math   = { },
+    style / font-type      = font,
+    style / font-path      = fonts
+  }
+\cs_new:Npn \__xdu_select_font:nn #1#2
+  {
+    \str_if_eq:NNTF { \l__xdu_font_type_tl } { font }
+      { #1 }
+      { #2 }
+  }
+\cs_new:Npn \__xdu_font_path:
+  {
+    \str_if_eq:NNTF { \l__xdu_font_type_tl } { font }
+      { }
+      { Path = \l__xdu_font_path_tl / , }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_sub_b:n #1
+  {
+    BoldFont = { #1 }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_sub_fb:n #1
+  {
+    BoldFont     = { #1 },
+    BoldFeatures = { FakeBold = \l__xdu_fake_bold_tl }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_sub_fs:n #1
+  {
+    SlantedFont     = { #1 },
+    SlantedFeatures = { FakeSlant = \l__xdu_fake_slant_tl }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_sub_fbfs:n #1
+  {
+    BoldSlantedFont     = { #1 },
+    BoldSlantedFeatures =
+      {
+        FakeBold  = \l__xdu_fake_bold_tl,
+        FakeSlant = \l__xdu_fake_slant_tl
+      }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_sub_bfs:n #1
+  {
+    BoldSlantedFont     = { #1 },
+    BoldSlantedFeatures = { FakeSlant = \l__xdu_fake_slant_tl }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_sub_i:n #1
+  {
+    ItalicFont = { #1 }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_sub_fi:n #1
+  {
+    ItalicFont     = { #1 },
+    ItalicFeatures = { FakeSlant = \l__xdu_fake_slant_tl }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_sub_ifb:n #1
+  {
+    BoldItalicFont     = { #1 },
+    BoldItalicFeatures = { FakeBold = \l__xdu_fake_bold_tl }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_sub_fifb:n #1
+  {
+    BoldItalicFont     = { #1 },
+    BoldItalicFeatures =
+      {
+        FakeBold  = \l__xdu_fake_bold_tl,
+        FakeSlant = \l__xdu_fake_slant_tl
+      }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_r:n #1
+  {
+    \__xdu_cfg_cjk_font_sub_fb:n   { #1 },
+    \__xdu_cfg_cjk_font_sub_fs:n   { #1 },
+    \__xdu_cfg_cjk_font_sub_fbfs:n { #1 },
+    \__xdu_cfg_cjk_font_sub_fi:n   { #1 },
+    \__xdu_cfg_cjk_font_sub_fifb:n { #1 }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_rb:nn #1#2
+  {
+    \__xdu_cfg_cjk_font_sub_b:n    { #2 },
+    \__xdu_cfg_cjk_font_sub_fs:n   { #1 },
+    \__xdu_cfg_cjk_font_sub_bfs:n  { #2 },
+    \__xdu_cfg_cjk_font_sub_fi:n   { #1 },
+    \__xdu_cfg_cjk_font_sub_fifb:n { #1 }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_ri:nn #1#2
+  {
+    \__xdu_cfg_cjk_font_sub_fb:n   { #1 },
+    \__xdu_cfg_cjk_font_sub_fs:n   { #1 },
+    \__xdu_cfg_cjk_font_sub_fbfs:n { #1 },
+    \__xdu_cfg_cjk_font_sub_i:n    { #2 },
+    \__xdu_cfg_cjk_font_sub_ifb:n  { #2 }
+  }
+\cs_new:Npn \__xdu_cfg_cjk_font_rbi:nnn #1#2#3
+  {
+    \__xdu_cfg_cjk_font_sub_b:n   { #2 },
+    \__xdu_cfg_cjk_font_sub_fs:n  { #1 },
+    \__xdu_cfg_cjk_font_sub_bfs:n { #2 },
+    \__xdu_cfg_cjk_font_sub_i:n   { #3 },
+    \__xdu_cfg_cjk_font_sub_ifb:n { #3 }
+  }
+\cs_new:Npn \__xdu_set_cjk_main_font:nn #1#2
+  {
+    \setCJKmainfont { #1 }
+      [ \__xdu_font_path: \__xdu_cfg_cjk_font_ri:nn { #1 } { #2 } ]
+  }
+\cs_new:Npn \__xdu_set_cjk_main_font:nnn #1#2#3
+  {
+    \setCJKmainfont { #1 }
+      [ \__xdu_font_path: \__xdu_cfg_cjk_font_rbi:nnn { #1 } { #2 } { #3 } ]
+  }
+\cs_new:Npn \__xdu_set_cjk_sans_font:n #1
+  {
+    \setCJKsansfont { #1 }
+      [ \__xdu_font_path: \__xdu_cfg_cjk_font_r:n { #1 } ]
+  }
+\cs_new:Npn \__xdu_set_cjk_sans_font:nn #1#2
+  {
+    \setCJKsansfont { #1 }
+      [ \__xdu_font_path: \__xdu_cfg_cjk_font_rb:nn { #1 } { #2 } ]
+  }
+\cs_new:Npn \__xdu_set_cjk_mono_font:n #1
+  {
+    \setCJKmonofont { #1 }
+      [ \__xdu_font_path: \__xdu_cfg_cjk_font_r:n { #1 } ]
+  }
+\cs_new:Npn \__xdu_load_cjk_font_win:
+  {
+    \__xdu_set_cjk_main_font:nn
+      { \__xdu_select_font:nn { SimSun   } { simsun.ttc  } }
+      { \__xdu_select_font:nn { KaiTi    } { simkai.ttf  } }
+    \__xdu_set_cjk_sans_font:n
+      { \__xdu_select_font:nn { SimHei   } { simhei.ttf  } }
+    \__xdu_set_cjk_mono_font:n
+      { \__xdu_select_font:nn { FangSong } { simfang.ttf } }
+  }
+\cs_new:Npn \__xdu_load_cjk_font_adobe:
+  {
+    \__xdu_set_cjk_main_font:nn
+      { \__xdu_select_font:nn { Adobe~Song~Std     } { adobesongstd-light.otf        } }
+      { \__xdu_select_font:nn { Adobe~Kaiti~Std    } { adobekaitistd-regular.otf     } }
+    \__xdu_set_cjk_sans_font:n
+      { \__xdu_select_font:nn { Adobe~Heiti~Std    } { adobeheitistd-regular.otf     } }
+    \__xdu_set_cjk_mono_font:n
+      { \__xdu_select_font:nn { Adobe~Fangsong~Std } { Adobe-Fangsong-Std-R-Font.otf } }
+  }
+\cs_new:Npn \__xdu_load_cjk_font_founder:
+  {
+    \__xdu_set_cjk_main_font:nn
+      { \__xdu_select_font:nn { FZShuSong-Z01  } { FZShuSong-Z01.ttf } }
+      { \__xdu_select_font:nn { FZKai-Z03      } { FZKai-Z03.ttf     } }
+    \__xdu_set_cjk_sans_font:n
+      { \__xdu_select_font:nn { FZHei-B01      } { FZHei-B01.ttf     } }
+    \__xdu_set_cjk_mono_font:n
+      { \__xdu_select_font:nn { FZFangSong-Z02 } { FZFSK.TTF         } }
+  }
+\cs_new:Npn \__xdu_load_cjk_font_sinotype:
+  {
+    \__xdu_set_cjk_main_font:nn
+      { \__xdu_select_font:nn { STSong     } { STSONG.TTF   } }
+      { \__xdu_select_font:nn { STKaiti    } { STKAITI.TTF  } }
+    \__xdu_set_cjk_sans_font:nn
+      { \__xdu_select_font:nn { STXihei    } { STXIHEI.TTF  } }
+      { \__xdu_select_font:nn { STHeiti    } { STHeiti.ttf  } }
+    \__xdu_set_cjk_mono_font:n
+      { \__xdu_select_font:nn { STFangsong } { STFANGSO.TTF } }
+  }
+\cs_new:Npn \__xdu_load_cjk_font_fandol:
+  {
+    \__xdu_set_cjk_main_font:nnn
+      { FandolSong-Regular.otf }
+      { FandolSong-Bold.otf    }
+      { FandolKai-Regular.otf  }
+    \__xdu_set_cjk_sans_font:nn
+      { FandolHei-Regular.otf  }
+      { FandolHei-Bold.otf     }
+    \__xdu_set_cjk_mono_font:n
+      { FandolFang-Regular.otf }
+  }
+\cs_new:Npn \__xdu_load_cjk_font_none: { }
+\cs_new:Npn \__xdu_set_latin_font:nnn #1#2#3
+  {
+    BoldFont        = { #1 },
+    SlantedFont     = { #2 },
+    BoldSlantedFont = { #3 },
+    ItalicFont      = { #2 },
+    BoldItalicFont  = { #3 }
+  }
+\cs_new:Npn \__xdu_set_latin_scale:
+  { Scale = MatchLowercase , }
+\cs_new:Npn \__xdu_off_latin_ligatures:
+  { Ligatures = CommonOff , }
+\cs_new:Npn \__xdu_set_latin_main_font:nnnnn #1#2#3#4#5
+  {
+    \str_if_eq:NNTF { \l__xdu_font_type_tl } { font }
+      { \setmainfont { #1 } }
+      {
+        \setmainfont { #2 }
+          [
+            \__xdu_font_path:
+            \__xdu_set_latin_font:nnn { #3 } { #4 } { #5 }
+          ]
+      }
+  }
+\cs_new:Npn \__xdu_set_latin_sans_font:nnnnn #1#2#3#4#5
+  {
+    \str_if_eq:NNTF { \l__xdu_font_type_tl } { font }
+      { \setsansfont { #1 } [ \__xdu_set_latin_scale: ] }
+      {
+        \setsansfont { #2 }
+          [
+            \__xdu_font_path:
+            \__xdu_set_latin_scale:
+            \__xdu_set_latin_font:nnn { #3 } { #4 } { #5 }
+          ]
+      }
+  }
+\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 { #2 }
+          [
+            \__xdu_font_path:
+            \__xdu_set_latin_scale:
+            \__xdu_off_latin_ligatures:
+            \__xdu_set_latin_font:nnn { #3 } { #4 } { #5 }
+          ]
+      }
+  }
+\cs_new:Npn \__xdu_set_latin_main_font:nnnn #1#2#3#4
+  {
+    \setmainfont { #1 }
+      [
+        \__xdu_set_latin_font:nnn { #2 } { #3 } { #4 }
+      ]
+  }
+\cs_new:Npn \__xdu_set_latin_sans_font:nnnn #1#2#3#4
+  {
+    \setsansfont { #1 }
+      [
+        \__xdu_set_latin_scale:
+        \__xdu_set_latin_font:nnn { #2 } { #3 } { #4 }
+      ]
+  }
+\cs_new:Npn \__xdu_set_latin_mono_font:nnnn #1#2#3#4
+  {
+    \setmonofont { #1 }
+      [
+        \__xdu_set_latin_scale:
+        \__xdu_off_latin_ligatures:
+        \__xdu_set_latin_font:nnn { #2 } { #3 } { #4 }
+      ]
+  }
+\cs_new:Npn \__xdu_load_latin_font_tac:
+  {
+    \__xdu_set_latin_main_font:nnnnn
+      { Times~New~Roman } { times.ttf   } { timesbd.ttf  } { timesi.ttf   } { timesbi.ttf  }
+    \__xdu_set_latin_sans_font:nnnnn
+      { Arial           } { arial.ttf   } { arialbd.ttf  } { ariali.ttf   } { arialbi.ttf  }
+    \__xdu_set_latin_mono_font:nnnnn
+      { Consolas        } { consola.ttf } { consolab.ttf } { consolai.ttf } { consolaz.ttf }
+  }
+\cs_new:Npn \__xdu_load_latin_font_tacn:
+  {
+    \__xdu_set_latin_main_font:nnnnn
+      { Times~New~Roman } { times.ttf } { timesbd.ttf } { timesi.ttf } { timesbi.ttf }
+    \__xdu_set_latin_sans_font:nnnnn
+      { Arial           } { arial.ttf } { arialbd.ttf } { ariali.ttf } { arialbi.ttf }
+    \__xdu_set_latin_mono_font:nnnnn
+      { Courier~New     } { cour.ttf  } { courbd.ttf  } { couri.ttf  } { courbi.ttf  }
+  }
+\cs_new:Npn \__xdu_load_latin_font_thcs:
+  {
+    \__xdu_set_latin_main_font:nnnnn
+      { Times~New~Roman            }
+      { times.ttf                  }
+      { timesbd.ttf                }
+      { timesi.ttf                 }
+      { timesbi.ttf                }
+    \__xdu_set_latin_sans_font:nnnnn
+      { Helvetica                  }
+      { Helvetica.ttf              }
+      { Helvetica~Bold.ttf         }
+      { Helvetica~Oblique.ttf      }
+      { Helvetica~Bold~Oblique.ttf }
+    \__xdu_set_latin_mono_font:nnnnn
+      { Courier~Std                }
+      { CourierStd.otf             }
+      { CourierStd-Bold.otf        }
+      { CourierStd-Oblique.otf     }
+      { CourierStd-BoldOblique.otf }
+  }
+\cs_new:Npn \__xdu_load_latin_font_gyre:
+  {
+    \__xdu_set_latin_main_font:nnnn
+      { texgyretermes-regular.otf    }
+      { texgyretermes-bold.otf       }
+      { texgyretermes-italic.otf     }
+      { texgyretermes-bolditalic.otf }
+    \__xdu_set_latin_sans_font:nnnn
+      { texgyreheros-regular.otf     }
+      { texgyreheros-bold.otf        }
+      { texgyreheros-italic.otf      }
+      { texgyreheros-bolditalic.otf  }
+    \__xdu_set_latin_mono_font:nnnn
+      { texgyrecursor-regular.otf    }
+      { texgyrecursor-bold.otf       }
+      { texgyrecursor-italic.otf     }
+      { texgyrecursor-bolditalic.otf }
+  }
+\cs_new:Npn \__xdu_load_latin_font_none: { }
+\cs_new:Npn \__xdu_load_unicode_math_pkg:
+  {
+    \PassOptionsToPackage { \l__xdu_unicode_math_tl } { unicode-math }
+    \RequirePackage { unicode-math }
+  }
+\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 ] }
+  }
+\cs_new:Npn \__xdu_define_math_font:nn #1#2
+  {
+    \cs_new:cpn { __xdu_load_math_font_ #1 : }
+      {
+        \__xdu_load_unicode_math_pkg:
+        \setmathfont { #2 }
+      }
+  }
+\clist_map_inline:nn
+  {
+    { asana          } { Asana-Math.otf             },
+    { concrete       } { Concrete-Math.otf          },
+    { erewhon        } { Erewhon-Math.otf           },
+    { euler          } { Euler-Math.otf             },
+    { fira           } { FiraMath-Regular.otf       },
+    { garamond       } { Garamond-Math.otf          },
+    { gfsneohellenic } { GFSNeohellenicMath.otf     },
+    { kp             } { KpMath-Regular.otf         },
+    { libertinus     } { LibertinusMath-Regular.otf },
+    { lm             } { latinmodern-math.otf       },
+    { newcm          } { NewCMMath-Regular.otf      },
+    { stix           } { STIXMath-Regular.otf       },
+    { stix2          } { STIXTwoMath-Regular.otf    },
+    { xcharter       } { XCharter-Math.otf          },
+    { xits           } { XITSMath-Regular.otf       },
+    { bonum          } { texgyrebonum-math.otf      },
+    { dejavu         } { texgyredejavu-math.otf     },
+    { pagella        } { texgyrepagella-math.otf    },
+    { schola         } { texgyreschola-math.otf     },
+    { termes         } { texgyretermes-math.otf     }
+  }
+  { \__xdu_define_math_font:nn #1 }
+\cs_new:Npn \__xdu_load_math_font_cm: { }
+\cs_new:Npn \__xdu_load_math_font_none: { }
+\cs_new:Npn \__xdu_load_font:
+  {
+    \use:c { __xdu_load_cjk_font_   \l__xdu_cjk_font_tl   : }
+    \use:c { __xdu_load_latin_font_ \l__xdu_latin_font_tl : }
+    \use:c { __xdu_load_math_font_  \l__xdu_math_font_tl  : }
+  }
+\ctex_at_end_preamble:n { \__xdu_load_font: }
+\str_new:N \l__xdu_title_str
+\str_new:N \l__xdu_title_i_str
+\str_new:N \l__xdu_title_ii_str
+\str_new:N \l__xdu_dept_str
+\str_new:N \l__xdu_major_str
+\str_new:N \l__xdu_author_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
+\clist_new:N \l__xdu_appendix_clist
+\tl_new:N \l__xdu_ack_tl
+\keys_define:nn { xdu / info }
+  {
+    title .tl_set:N = \l__xdu_title_str,
+    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 .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,
+    appendix .clist_set:N = \l__xdu_appendix_clist,
+    acknowledgements .tl_set:N = \l__xdu_ack_tl
+  }
+\keys_set:nn { xdu }
+  {
+    info / title                 = { },
+    info / department            = { },
+    info / major                 = { },
+    info / author                = { },
+    info / supervisor            = { },
+    info / supervisor-enterprise = { },
+    info / student-id            = { },
+    info / abstract              = { },
+    info / abstract*             = { },
+    info / keywords              = { },
+    info / keywords*             = { },
+    info / bib-resource          = { },
+    info / appendix              = { },
+    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_class_str
+\str_new:N \l__xdu_submit_date_str
+\clist_new:N \l__xdu_sign_clist
+\clist_new:N \l__xdu_date_clist
+\keys_define:nn { xdu / info }
+  {
+    class .tl_set:N = \l__xdu_class_str,
+    submit-date .tl_set:N = \l__xdu_submit_date_str,
+    sign .clist_set:N = \l__xdu_sign_clist,
+    date .clist_set:N = \l__xdu_date_clist
+  }
+\keys_set:nn { xdu }
+  {
+    info / class       = { },
+    info / submit-date = { },
+    info / sign        = { },
+    info / date        = { }
+  }
+\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
+\tl_new:N \l__xdu_biblatex_option_tl
+\clist_new:N \l__xdu_search_path_clist
+\bool_new:N \l__xdu_fix_input_bool
+\bool_new:N \l__xdu_fix_include_bool
+\bool_new:N \l__xdu_fix_graphics_bool
+\tl_new:N \l__xdu_ref_add_space_bool
+\tl_new:N \l__xdu_cap_label_sep_tl
+\tl_new:N \l__xdu_ft_cap_format_tl
+\tl_new:N \l__xdu_alg_cap_format_tl
+\tl_new:N \l__xdu_ft_cap_align_tl
+\tl_new:N \l__xdu_alg_cap_align_tl
+\bool_new:N \l__xdu_add_alg_rule_vspace_bool
+\bool_new:N \l__xdu_tab_small_bool
+\bool_new:N \l__xdu_alg_small_cap_bool
+\bool_new:N \l__xdu_alg_small_bool
+\clist_new:N \l__xdu_before_skip_clist
+\clist_new:N \l__xdu_after_skip_clist
+\tl_new:N \l__xdu_chap_tl
+\tl_new:N \l__xdu_sec_tl
+\tl_new:N \l__xdu_subsec_tl
+\tl_new:N \l__xdu_subsubsec_tl
+\tl_new:N \l__xdu_para_tl
+\tl_new:N \l__xdu_subpara_tl
+\bool_new:N \l__xdu_sym_mgn_bool
+\tl_new:N \l__xdu_page_v_align_tl
+\keys_define:nn { xdu / style }
+  {
+    en-cjk-font .bool_set:N = \l__xdu_en_cjk_font_bool,
+    language .choices:nn = { zh, en }
+      { \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 },
+    biblatex-option .tl_set:N = \l__xdu_biblatex_option_tl,
+    file-search-path .clist_set:N = \l__xdu_search_path_clist,
+    fix-input .bool_set:N = \l__xdu_fix_input_bool,
+    fix-include .bool_set:N = \l__xdu_fix_include_bool,
+    fix-includegraphics .bool_set:N = \l__xdu_fix_graphics_bool,
+    ref-add-space .bool_set:N = \l__xdu_ref_add_space_bool,
+    caption-label-sep .tl_set:N = \l__xdu_cap_label_sep_tl,
+    ft-caption-format .choices:nn = { plain, hang }
+      { \tl_set_eq:NN \l__xdu_ft_cap_format_tl \l_keys_choice_tl },
+    alg-caption-format .choices:nn = { plain, hang }
+      { \tl_set_eq:NN \l__xdu_alg_cap_format_tl \l_keys_choice_tl },
+    ft-caption-align .choices:nn = { left, centering, centering-left }
+      { \tl_set_eq:NN \l__xdu_ft_cap_align_tl \l_keys_choice_tl },
+    alg-caption-align .choices:nn = { left, centering, centering-left }
+      { \tl_set_eq:NN \l__xdu_alg_cap_align_tl \l_keys_choice_tl },
+    add-alg-rule-vspace .bool_set:N = \l__xdu_add_alg_rule_vspace_bool,
+    table-small-font .bool_set:N = \l__xdu_tab_small_bool,
+    algorithm-small-caption .bool_set:N = \l__xdu_alg_small_cap_bool,
+    algorithm-small-font .bool_set:N = \l__xdu_alg_small_bool,
+    before-skip .clist_set:N = \l__xdu_before_skip_clist,
+    after-skip .clist_set:N = \l__xdu_after_skip_clist,
+    chap-zihao .tl_set:N = \l__xdu_chap_tl,
+    sec-zihao .tl_set:N = \l__xdu_sec_tl,
+    subsec-zihao .tl_set:N = \l__xdu_subsec_tl,
+    subsubsec-zihao .tl_set:N = \l__xdu_subsubsec_tl,
+    para-zihao .tl_set:N = \l__xdu_para_tl,
+    subpara-zihao .tl_set:N = \l__xdu_subpara_tl,
+    symmetric-margin .bool_set:N = \l__xdu_sym_mgn_bool,
+    page-vertical-align .tl_set:N = \l__xdu_page_v_align_tl
+  }
+\keys_set:nn { xdu }
+  {
+    style / en-cjk-font             = false,
+    style / language                = zh,
+    style / bib-backend             = biblatex,
+    style / biblatex-option         = { },
+    style / file-search-path        = { },
+    style / fix-input               = false,
+    style / fix-include             = false,
+    style / fix-includegraphics     = false,
+    style / ref-add-space           = false,
+    style / caption-label-sep       = { 0.75em },
+    style / ft-caption-format       = { hang },
+    style / alg-caption-format      = { hang },
+    style / ft-caption-align        = { centering-left },
+    style / alg-caption-align       = { left },
+    style / add-alg-rule-vspace     = { false },
+    style / table-small-font        = true,
+    style / algorithm-small-caption = true,
+    style / algorithm-small-font    = true,
+    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     = { 顶部对齐 }
+  }
+\NewDocumentCommand \xdusetup { m }
+  { \keys_set:nn { xdu } { #1 } }
+\keys_define:nn { xdu }
+  {
+    style .meta:nn = { xdu / style } { #1 },
+    info  .meta:nn = { xdu / info  } { #1 }
+  }
+\ProcessKeysOptions { xdu / style }
+\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 } }
+  }
+\newgeometry
+  {
+    left       = 3.17cm,
+    right      = 3.17cm,
+    top        = 2.54cm,
+    bottom     = 2.54cm,
+    footskip   = 0cm,
+    headsep    = 0cm,
+    headheight = 0cm
+  }
+\savegeometry { main }
+\loadgeometry { main }
+\RequirePackage { hyperref }
+\hypersetup
+  {
+    bookmarksnumbered,
+    hidelinks
+  }
+\ctex_at_end_preamble:n
+  {
+    \hypersetup
+      {
+        pdfsubject = { 西安电子科技大学本科生毕业论文(设计)开题报告 },
+        pdfcreator = { XeLaTeX~with~xduugtp~class~in~XDUTS },
+        pdfauthor  = \l__xdu_author_str
+      }
+  }
+\cs_new_protected:Npn \__xdu_begin_document:n #1
+  { \ctex_gadd_ltxhook:nn { env/document/begin } { #1 } }
+\PassOptionsToPackage { sort&compress       } { gbt7714  }
+\PassOptionsToPackage { style = gb7714-2015 } { biblatex }
+\__xdu_begin_document:n
+  {
+    \tl_if_eq:NnTF \l__xdu_bib_tool_tl { bibtex }
+      {
+        \RequirePackage { gbt7714 }
+        \bibliographystyle { gbt7714-numerical }
+        \cs_set:Npn \@biblabel #1 { \hfill [ #1 ] }
+        \cs_set:Npn \bibsection { }
+        \dim_set:Nn \bibsep { 0pt }
+        \NewDocumentCommand \parencite { m }
+          { \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 } }
+        \defbibheading { bibliography } [ ] { }
+        \dim_set:Nn \biblabelsep { 1ex }
+        \dim_set:Nn \bibitemsep { 0pt }
+        \cs_set_eq:NN \SlashFont \rmfamily
+      }
+    \cs_set:Npn \bibfont
+      {
+        \zihao { -4 }
+      }
+  }
+\PassOptionsToPackage { breakable } { tcolorbox }
+\RequirePackage       { tcolorbox }
+\dim_new:N \l__xdu_box_margin_dim
+\dim_set:Nn \l__xdu_box_margin_dim { 5pt }
+\dim_new:N \l__xdu_box_rule_dim
+\dim_set:Nn \l__xdu_box_rule_dim { 0.5pt }
+\tcbset
+  {
+    standard~jigsaw,
+    sharp~corners    = all,
+    colframe         = black,
+    opacityback      = 0,
+    boxsep           = 0pt,
+    boxrule          = \l__xdu_box_rule_dim,
+    top              = \l__xdu_box_margin_dim,
+    bottom           = \l__xdu_box_margin_dim,
+    left             = \l__xdu_box_margin_dim,
+    right            = \l__xdu_box_margin_dim,
+    beforeafter~skip = 0pt,
+    before~upper     =
+      {
+        \dim_set:Nn \parindent    { 2em  }
+        \dim_set:Nn \baselineskip { 20pt }
+      }
+  }
+\tcbset
+  {
+    tpboxi/.style =
+      {
+        breakable        = true,
+        height~fixed~for = first~and~middle
+      },
+    tpboxii/.style =
+      {
+        breakable        = true,
+        height~fixed~for = all,
+        height~fill      = maximum
+      },
+    tpboxiii/.style =
+      {
+        height           = .5\textheight + .5\l__xdu_box_rule_dim,
+        space~to~upper   = true,
+        lower~separated  = false,
+        halign~lower     = flush~right
+      }
+  }
+\RequirePackage { graphicx }
+\int_new:N \l__xdu_sign_no_int
+\int_set:Nn \l__xdu_sign_no_int { 1 }
+\NewDocumentEnvironment { tpbox } { oo }
+  { \IfNoValueF { #1 } { \begin { tcolorbox } [ #1 ] } }
+  {
+    \IfNoValueF { #1 }
+      {
+        \IfNoValueF { #2 }
+          {
+            \tcblower
+            签名
+            \clist_if_empty:NTF \l__xdu_sign_clist
+              { \skip_horizontal:n { 6em } \hbox:n { } }
+              {
+                \skip_horizontal:n { 1em }
+                \includegraphics [ width = 10em, height = 25pt, keepaspectratio ]
+                  {
+                    \str_if_eq:nnTF { #2 } { 指导教师意见 }
+                      { \clist_item:Nn \l__xdu_sign_clist { 1 } }
+                      { \clist_item:Nn \l__xdu_sign_clist { 2 } }
+                  }
+              }
+            \\
+            \clist_if_empty:NTF \l__xdu_date_clist
+              { \__xdu_zh_today: }
+              {
+                \str_if_eq:nnTF { #2 } { 指导教师意见 }
+                  { \clist_item:Nn \l__xdu_zh_date_clist { 1 } }
+                  { \clist_item:Nn \l__xdu_zh_date_clist { 2 } }
+              }
+          }
+        \end { tcolorbox }
+      }
+  }
+\cs_new:Npn \__xdu_bib:
+  {
+    \cs_set:Npn \bibname { 参考文献 }
+    \subsection* { \bibname }
+    \group_begin:
+      \tl_if_eq:NnTF \l__xdu_bib_tool_tl { bibtex }
+        {
+          \dim_set:Nn \labelsep { 1ex }
+          \bibliography { \l__xdu_bib_file_clist }
+        }
+        { \printbibliography }
+    \group_end:
+  }
+\cs_new_eq:NN \__xdu_org_sec:n \section
+\RenewDocumentCommand \section { m }
+  {
+    \str_case:nnTF { #1 }
+      {
+        { 论文名称及项目来源 }
+          {
+            \end   { tpbox }
+            \begin { tpbox } [tpboxi]
+          }
+        { 研究目的和意义 }
+          {
+            \end   { tpbox }
+            \skip_vertical:n { -\l__xdu_box_rule_dim }
+            \skip_vertical:n { \z at skip }
+            \begin { tpbox } [ tpboxii ]
+          }
+        { 国内外研究现状和发展趋势 }
+          {
+            \end   { tpbox }
+            \begin { tpbox } [ tpboxii ]
+          }
+        { 主要研究内容、要解决的问题及本文的初步方案 }
+          {
+            \__xdu_bib:
+            \end   { tpbox }
+            \begin { tpbox } [ tpboxii ]
+          }
+        { 工作的主要阶段、进度和完成时间 }
+          {
+            \end   { tpbox }
+            \begin { tpbox } [ tpboxi ]
+          }
+        { 已进行的前期准备工作 }
+          {
+            \end   { tpbox }
+            \skip_vertical:n { -\l__xdu_box_rule_dim }
+            \skip_vertical:n { \z at skip }
+            \begin { tpbox } [ tpboxii ]
+          }
+        { 指导教师意见 }
+          {
+            \end   { tpbox }
+            \begin { tpbox } [ tpboxiii ] [ 指导教师意见 ]
+          }
+        { 学院审核意见 }
+          {
+            \end   { tpbox }
+            \skip_vertical:n { -\l__xdu_box_rule_dim }
+            \skip_vertical:n { \z at skip }
+            \begin { tpbox } [ tpboxiii ] [ 学院审核意见 ]
+          }
+      }
+      { \__xdu_org_sec:n { #1 } }
+      { }
+  }
+\pagestyle { empty }
+\ctexset
+  {
+    section       / name       = { ,、   },
+    subsection    / name       = { (,) },
+    subsubsection / name       = { (,) },
+    section       / number     = { \chinese { section       } },
+    subsection    / number     = { \chinese { subsection    } },
+    subsubsection / number     = { \arabic  { subsubsection } },
+    section       / format     = { \raggedright \zihao { -4 } },
+    subsection    / format     = { \raggedright \zihao { -4 } },
+    subsubsection / format     = { \raggedright \zihao { -4 } },
+    section       / aftername  = { },
+    subsection    / aftername  = { },
+    subsubsection / aftername  = { },
+    section       / beforeskip = { 0pt },
+    subsection    / beforeskip = { 8pt },
+    subsubsection / beforeskip = { 8pt },
+    section       / afterskip  = { 0pt },
+    subsection    / afterskip  = { 0pt },
+    subsubsection / afterskip  = { 0pt },
+    section       / indent     = { 0em },
+    subsection    / indent     = { 0em },
+    subsubsection / indent     = { 2em },
+  }
+\RequirePackage { xeCJKfntef }
+\cs_new:Npn \__xdu_uline:n #1
+  { \CJKunderline [ thickness = 1pt ] { #1 } }
+\cs_new:Npn \__xdu_uline:nn #1#2
+  { \CJKunderline [ thickness = 1pt ] { \hbox_to_wd:nn { #1 } { \hfil #2 \hfil } } }
+\dim_new:N \l__xdu_cover_author_info_dim
+\dim_set:Nn \l__xdu_cover_author_info_dim { 5em }
+\ctex_at_end_preamble:n
+  {
+    \rmfamily \zihao { -3 }
+    \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim { \l__xdu_author_str     }
+    \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim { \l__xdu_major_str      }
+    \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim { \l__xdu_student_id_str }
+    \__xdu_str_max_dim:Nn \l__xdu_cover_author_info_dim { \l__xdu_supv_str       }
+    \dim_add:Nn \l__xdu_cover_author_info_dim { 2em }
+  }
+\cs_new:Npn \__xdu_cover_author_info:nn #1#2
+  {
+    \vbox_to_ht:nn { 31pt }
+      {
+        \mode_leave_vertical:
+        \hfil
+        \hbox:n
+          {
+            \rmfamily \zihao { -3 }
+            \hbox_to_wd:nn { 4em } { #1 }
+            \skip_horizontal:n { 0.5em }
+            \__xdu_uline:nn { \l__xdu_cover_author_info_dim } { #2 }
+          }
+        \hfil
+      }
+  }
+\cs_generate_variant:Nn \str_if_eq:nnTF { xnTF }
+\ctex_at_end_preamble:n
+  {
+    \str_new:N \l__xdu_pure_dept_str
+    \str_if_eq:xnTF { \str_range:Nnn \l__xdu_dept_str { -2 } { -1 } } { 学院 }
+      { \str_set:Nx \l__xdu_pure_dept_str { \str_range:Nnn \l__xdu_dept_str { 1 } { -3 } } }
+      { \str_set:NV \l__xdu_pure_dept_str \l__xdu_dept_str }
+  }
+\cs_new:Npn \__xdu_zh_today:
+  {
+    \int_use:N \c_sys_year_int  年
+    \int_use:N \c_sys_month_int 月
+    \int_use:N \c_sys_day_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 } 月
+        \clist_item:Nn \l__xdu_submit_date_clist { 3 } 日
+      }
+  }
+\clist_new:N \l__xdu_zh_date_clist
+\clist_new:N \l__xdu_zh_date_one_clist
+\seq_new:N \l__xdu_date_seq
+\ctex_at_end_preamble:n
+  {
+    \clist_map_inline:Nn \l__xdu_date_clist
+      {
+        \seq_set_split:Nnn \l__xdu_date_seq { - } { #1 }
+        \clist_set_from_seq:NN \l__xdu_zh_date_one_clist \l__xdu_date_seq
+        \clist_put_right:Nx \l__xdu_zh_date_clist
+          {
+            \clist_item:Nn \l__xdu_zh_date_one_clist { 1 } 年
+            \clist_item:Nn \l__xdu_zh_date_one_clist { 2 } 月
+            \clist_item:Nn \l__xdu_zh_date_one_clist { 3 } 日
+          }
+      }
+  }
+\cs_new:Npn \__xdu_cover:
+  {
+    \vbox:n { }
+    \skip_vertical:n { -5pt }
+    \vbox_to_ht:nn { 85pt }
+      {
+        \rmfamily \zihao { -2 } \centering
+        西安电子科技大学 \__xdu_uline:n { \l__xdu_pure_dept_str } 学院
+      }
+    \vbox_to_ht:nn { 32.5pt }
+      {
+        \sffamily \zihao { 2 } \centering
+        本科生毕业论文(设计)开题报告
+      }
+    \vbox_to_ht:nn { 171pt }
+      {
+        \CJKfamily+ { sf } \zihao { -3 } \centering
+        (\l__xdu_class_str{} 届)
+      }
+    \__xdu_cover_author_info:nn { 学生姓名 } { \l__xdu_author_str     }
+    \__xdu_cover_author_info:nn { 专业     } { \l__xdu_major_str      }
+    \__xdu_cover_author_info:nn { 学号     } { \l__xdu_student_id_str }
+    \__xdu_cover_author_info:nn { 指导教师 } { \l__xdu_supv_str       }
+    \skip_vertical:n { 92pt }
+    \vbox_to_ht:nn { 81.5pt }
+      {
+        \rmfamily \zihao { 4 } \centering
+        \__xdu_zh_submit_date:
+      }
+    \vbox:n
+      {
+        \rmfamily \zihao { 5 } \centering
+        (本表一式三份,学生、指导教师、学院各一份)
+      }
+  }
+\ctex_after_end_preamble:n { \__xdu_cover: \clearpage }
+\ctex_after_end_preamble:n { \begin { tpbox } }
+\AtEndDocument             { \end   { tpbox } }
+%% 
+%%
+%% End of file `xduugtp.cls'.


Property changes on: trunk/Master/texmf-dist/tex/xelatex/xduts/xduugtp.cls
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property


More information about the tex-live-commits mailing list.