% \iffalse meta-comment % % File: hduthesis.dtx % ----------------------------------------------------------------------- % Copyright (C) 2023-2025 by Mingyu Xia <myhsia@outlook.com> * % * % It may be distributed and/or modified under the conditions of the * % LaTeX Project Public License (LPPL), either version 1.3c of this * % license or (at your option) any later version. The latest version * % of this license is in the file * % * % http://www.latex-project.org/lppl.txt * % * % This work has the LPPL maintenance status `maintained'. * % * % The Current Maintainer of this work is Mingyu Xia. * % * % This work consists of the files hduthesis.dtx, * % hdu-graphics.dtx, * % and hduthesis.ins, * % and the derived files hduthesis.cls, * % hdu-<module>.code.tex, * % beamerthemehdu.sty, * % hdu-logo.pdf, * % hdu-title.pdf, * % hdu-badge.pdf, * % hdu-motto.pdf, * % hduthesis.pdf, * % hdu-graphics.pdf, * % and README.md. * % ----------------------------------------------------------------------- % % Any modification of this file should ensure that the copyright and % license information is placed in the derived files. % % ----------------------------------------------------------------------- % %<*internal> \iffalse %</internal> % %<*readme> The `hduthesis` Class: LaTeX class for Hangzhou Dianzi University ================================================================= LaTeX class for bachelor and mphil theses in Hangzhou Dianzi University is constructed by `LaTeX-expl3`. This class provides typesets for bachelors' and mphils' thesis in Hangzhou Dianzi University. Modules of `hduThesiS` provide the following supports: - `typeset`: Math and text Typeset - `layout`: Some central layout typeset interfaces - `bc.config`: Configuration for bachelor thesis' style - `pg.config`: Configuration for mphil thesis' style - `beamer`: HDU Beamer theme - `stationery`: Creation of HDU's stationery - `exam`: Typeset for HDU examinations' solution - `l3doc`: Configuration for class's `l3doc` manual Issues ------ The issue tracker for `hduthesis` is currently located [on GitHub](https://github.com/myhsia/hduthesis/issues). --- æ州电å科技大å¦å¦ä½è®ºæ–‡ LaTeX æ¨¡æ¿ ============================== æ州电å科技大å¦å¦ä½è®ºæ–‡ LaTeX 模æ¿ä»¥ `LaTeX-expl3` 构建,æä¾›æ州电å科技大å¦å¦å£«å’Œç¡•å£«å¦ä½è®ºæ–‡æ ¼å¼. `hduThesiS` 的模å—æ供以下支æŒï¼š - `typeset`: æ•°å¦å’Œæ–‡æœ¬æŽ’版 - `layout`: å°é¢å’Œæµ®åŠ¨é¢˜å¸ƒå±€ - `bc.config`: å¦å£«è®ºæ–‡æ ¼å¼é…ç½® - `pg.config`: ç¡•å£«è®ºæ–‡æ ¼å¼é…ç½® - `beamer`: HDU Beamer 主题 - `stationery.config`: å¦æ ¡ä¿¡çº¸ç”Ÿæˆ - `exam`: HDU 试å·è§£æžæ¨¡æ¿ - `hdu.l3doc`: æ¨¡æ¿ `l3doc` 用户手册é…ç½® --- References ---------- > \[1\]. The LaTeX3 Interfaces > \[2\]. CTeX å®é›† > \[3\]. LaTeX for package and class authors current version > \[4\]. The LaTeX2e Sources > \[5\]. The LaTeX3 kernel: style guide for code authors > \[6\]. Package `etoolbox`, `geometry`, `tocloft`, `fancyhdr`, etc. > \[7\]. [毕业设计(论文)的写作规范åŠæ ¼å¼è¦æ±‚(å«å†™ä½œæ¨¡æ¿)](https://jwc.hdu.edu.cn/2022/0428/c4555a153813/page.htm) > \[8\]. [æ州电å科技大å¦ç ”究生å¦ä½è®ºæ–‡æ ¼å¼ç»Ÿä¸€è¦æ±‚(æç”µç ”ã€”2012〕311å·ï¼‰](https://grs.hdu.edu.cn/2013/0507/c1730a51754/page.htm) Copyright and License --------------------- Copyright (C) 2023-2025 by Mingyu Xia <myhsia@outlook.com> It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this license or (at your option) any later version. The latest version of this license is in the file <http://www.latex-project.org/lppl.txt> This work has the LPPL maintenance status `maintained`. The Current Maintainer of this work is Mingyu Xia. %</readme> % %<*internal> \fi %</internal> % %<*driver|package> \RequirePackage{etoolbox} %</driver|package> %<*driver> \documentclass[mode = l3doc, full]{hduthesis} \usepackage[mono = false]{libertine} \makeindex \begin{document} \DocInput{\jobname.dtx} \end{document} %</driver> % \fi % % \title{\bfseries % \hologo{hduThesiS} 文档类\\^^A % æ州电å科技大å¦å¦ä½è®ºæ–‡ \hologo{LaTeX} 模æ¿^^A % \thanks{^^A % 在 æ州电å科技大å¦éžæ¯•ä¸šç”Ÿ / 教师 ä¸å¯»æ‰¾æ¨¡æ¿çš„接ç人, % è¦æ±‚熟悉 \pkg{expl3} 与文å¦ç¼–程. 欢迎有æ„愿者邮件è”ç³». % } % } % % \author{^^A % Mingyu Xia \mailto{myhsia@outlook.com}^^A % \thanks{Physics Department, Graduate in 07/2025} % } % % \maketitle % % \begin{documentation} % % \begin{abstract} % \hologo{hduthesis} 是æ州电å科技大å¦å¦ä½è®ºæ–‡ \hologo{LaTeX} 模æ¿ï¼Œ % 支æŒå¦å£«ã€ç¡•å£«å¦ä½è®ºæ–‡æŽ’版,åŒæ—¶æ供了å¦æ ¡ä¿¡ç¬ºã€Beamer(幻ç¯ç‰‡ï¼‰ä¸Žè¯•å·è§£æžæ¨¡æ¿. % \end{abstract} % % \begin{center} % \small\bfseries 用户åè®® % \end{center} % \begin{enumerate}[itemsep = 2em, itemsep = 0pt]\small % \item 本模æ¿é€šè¿‡ LPPL 1.3c å议开放æºä»£ç ,您å¯ä»¥éšæ„使用编译出的 PDF 文件. % \item 本模æ¿æ ¹æ®æ州电å科技大å¦æ•™åŠ¡å¤„é¢å‘çš„ % \href{https://jwc.hdu.edu.cn/2022/0428/c4528a153813/page.htm} % {æ电ç†å·¥ç±»æ¯•ä¸šè®ºæ–‡å†™ä½œè§„范} 编写而æˆï¼Œä½œè€…ä¸å¯¹ä½¿ç”¨æœ¬æ¨¡æ¿äº§ç”Ÿçš„æ ¼å¼å®¡æŸ¥é—®é¢˜è´Ÿè´£. % 如果您所在的å¦é™¢å› 论文查é‡ã€æ”¶å½•ç‰åŽŸå› è¦æ±‚æ交 \file{.docx} æ ¼å¼ï¼Œ % ä¸æŽ¥æ”¶ \file{.pdf} 论文稿件,请勿执æ„使用本模æ¿ï¼Œé¿å…å› æ ¼å¼è½¬æ¢å¸¦æ¥ä¸å¿…è¦çš„麻烦. % 使用本模æ¿æ—¶ï¼Œè¯·æŒ‰ç¼–译错误æ示æ“作æ¥å‹¾é€‰åŒæ„用户åè®®. % \item 欢迎å‰å¾€ \href{https://github.com/myhsia/hduthesis/issues}{GitHub} % æ交å馈æ„è§ï¼Œä¸ºæŽ¨åŠ¨å¦æ ¡è®¤è¯ä¸Žè§„范化 \hologo{hduthesis} 贡献力é‡. % \end{enumerate} % % \setcounter{tocdepth}{2} \tableofcontents % % \section{\hologo{hduthesis} 模æ¿ä»‹ç»} % % \hologo{hduthesis}(\textbf Hangzhou \textbf Dianzi \textbf University % \hologo{LaTeX} \textbf{Thesis} Template) 是æ州电å科技大å¦å¦ä½è®ºæ–‡ % \underline{éžå®˜æ–¹} \hologo{LaTeX} 模æ¿ï¼Œä»¥ \hologo{LaTeX3} 构建, % 支æŒå¦å£«å’Œç¡•å£«å¦ä½è®ºæ–‡æŽ’版. % % 本模æ¿æ–‡æ¡£å°†å°½é‡å®Œæ•´åœ°ä»‹ç»æ¨¡æ¿çš„使用方法,如有ä¸æ¸…楚之处,或者想æ出改进建议, % å¯ä»¥åœ¨ \href{https://github.com/myhsia/hduthesis/issues}{GitHub Issues} % æ交å馈æ„è§åŠè´¡çŒ®ä»£ç . % % 对于未接触过 \hologo{LaTeX} çš„åˆå¦è€…,推è阅读 % \href{https://tug.ctan.org/info/lshort/english/lshort.pdf} % {The Not So Short Introduction to \hologo{LaTeX2e}} % (å¯åœ¨ç»ˆç«¯æ‰§è¡Œ |texdoc lshort| 获å–)或者其ä¸æ–‡ç‰ˆ % \href{http://mirrors.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf} % {《一份(ä¸å¤ªï¼‰ç®€çŸçš„ \hologo{LaTeX2e} 介ç»ã€‹} % (å¯åœ¨ç»ˆç«¯æ‰§è¡Œ |texdoc lshort-zh-cn| 获å–). % % \subsection{模æ¿ç»„æˆ} % % \hologo{hduthesis} 模æ¿çš„ \file{./tex/} 文件夹ä¸åŒ…å«äº†æ¨¡æ¿çš„所有 Runtime 文件. % å…¶ä¸ï¼Œ\file{hduthesis.cls} 是模æ¿çš„æ ¸å¿ƒæ–‡ä»¶ï¼Œå®žè´¨ä¸Šå¹¶ä¸æ供主è¦åŠŸèƒ½ï¼Œ % åªç”¨äºŽå¯¹å…¨å±€é€‰é¡¹çš„æŽ§åˆ¶åŠ è½½æ¨¡æ¿çš„å„个模å—. 模æ¿çš„功能模å—如下 % % \begin{tasks}(2) % \task \file{typeset}:å—体和公å¼è®¾ç½®. % \task \file{layout}:版é¢æ ¸å¿ƒæŽ’版接å£. % \task \file{pg.config}:硕士å¦ä½è®ºæ–‡é…置模å—. % \task \file{bc.config}:本科å¦ä½è®ºæ–‡é…置模å—. % \task \file{beamerthemehdu}:Beamer 主题. % \task \file{stationery}:信纸模å—. % \task \file{exam}:HDU 试å·è§£æžæ¨¡æ¿. % \task \file{l3doc}:用户手册模å—. % \end{tasks} % % 以上模å—包å«åœ¨ \file{hdu-}\meta{module name}\file{.code.tex} 文件ä¸. % åŒæ—¶ï¼Œ\file{./tex/} 文件夹ä¸è¿˜åŒ…å«äº† \file{hdu-logo.pdf}ã€\file{hdu-title.pdf}〠% \file{hdu-motto.pdf}ã€\file{hdu-badge.pdf},分别æä¾›æ州电å科技大å¦æ ¡å¾½ã€æ ¡å〠% æ ¡è®å’Œæ ¡ç‰Œçš„矢é‡å›¾. % \footnote{å¦‚æžœä½ é€šè¿‡ |tlmgr| 安装了æ¤æ¨¡æ¿ï¼Œåœ¨å…¶ä»–文档类ä¸ä¹Ÿå¯ä»¥è°ƒç”¨è¿™äº›ç´ æ.} % % 模æ¿é¢„åŠ è½½çš„å®åŒ…有 % % \begin{table}[htbp] % \centering \renewcommand* \arraystretch {.72} % \begin{tabular*}{\linewidth} % {*9{@{\hspace{1ex}}>{\footnotesize}l@{\hspace{1ex}}}} % \toprule % \pkg{amssymb} & \pkg{bm} & \pkg{booktabs} & % \pkg{cancel} & \pkg{circuitikz} & \pkg{cleveref} & % \pkg{derivative} & \pkg{extarrows} & \pkg{fixdif} \\ % \midrule % \pkg{hyperref} & \pkg{listings} & \pkg{mathtools} & % \pkg{multicol} & \pkg{pgfplots} & \pkg{physics2} & % \pkg{siunitx} & % \multicolumn{2}{@{}>{\footnotesize}l}{\pkg{unicode-math}}\\ % \bottomrule % \end{tabular*} % \end{table} % % \subsection{文件结构} % % \noindent \begin{minipage}[t]{.54\linewidth} % \subsubsection{æºæ–‡ä»¶ \& 使用用例} % \dirtree % {^^A % .1 ./hduthesis.tar.gz/. % .2 hduthesis.dtx, *.pdf. % .2 hdu-graphics.dtx, *.pdf. % .2 hduthesis.ins. % .2 example/. % .3 hduthesis-bachelor.tex, *.pdf. % .3 hduthesis-mphil.tex, *.pdf. % .3 reference.bib. % .3 cha/. % .3 figures/. % .2 README.md. % } % \end{minipage} \hspace*{\fill} % \begin{minipage}[t]{.42\linewidth} % \subsubsection{Runtime 文件} \label{1.2.2} % \dirtree % {^^A % .1 ./hduthesis.tar.gz/. % .2 hduthesis.dtx/. % .3 hduthesis.cls. % .3 hdu-<module>.code.tex. % .3 beamerthemehdu.sty. % .3 README.md. % .2 hdu-graphics.dtx/. % .3 hdu-logo.pdf. % .3 hdu-title.pdf. % .3 hdu-badge.pdf. % .3 hdu-motto.pdf. % } % \end{minipage} % % \subsection{模æ¿çš„妥å与僵æŒ} % % \begin{enumerate} % \item 模æ¿çš„ç« èŠ‚ï¼ˆ\cs[no-index]{chapter}ã€\cs[no-index]{section}〠% \cs[no-index]{subsection})å—体ã€å‰åŽé—´è·å®Œå…¨æŒ‰ç…§ % æ电ç†å·¥ç±»æ¯•ä¸šè®ºæ–‡å†™ä½œè§„范 è¿›è¡Œè®¾ç½®ï¼Œè™½ç„¶è¿™æ ·çš„è®¾ç½®å¯èƒ½ä¸Žæ‚¨çš„审美ä¸ç¬¦ï¼Œ % 但是这是为了ä¿è¯è®ºæ–‡çš„æ ¼å¼ç¬¦åˆå¦æ ¡çš„è¦æ±‚. % \item æ电ç†å·¥ç±»æ¯•ä¸šè®ºæ–‡å†™ä½œè§„范ä¸è¦æ±‚ % å‚è€ƒæ–‡çŒ®ä¹¦å†™æ ¼å¼åº”符åˆGB7714-1987ï¼Œä½†ç›®å‰ % GB7714-2015 为å¦æœ¯ç•Œé€šç”¨æ ¼å¼ï¼Œåœ¨å·²æœ‰æ–°æ ‡å‡†æƒ…å†µä¸‹æ—§æ ‡å‡†ç†åº”废æ¢ä½¿ç”¨. % 所以本模æ¿é»˜è®¤ä½¿ç”¨ \pkg{gbt7714} å®åŒ…. % \end{enumerate} % % \section{模æ¿å®‰è£…} % % \subsection{系统è¦æ±‚} % % 本模æ¿æ”¯æŒåœ¨ |macOS|ã€|Windows|ã€|Linux|ã€|Overleaf|ã€|LoongTeX|ã€|TeXPage| % ç‰å¹³å°ä½¿ç”¨ï¼Œå…¼å®¹å‘行版 \hologo{TeX} Live 2023 åŠæ›´æ–°ç‰ˆæœ¬^^A % \footnote{ % 本模æ¿å‡å¯åœ¨ |macOS Sequoia Version 15.4| / % |Ubuntu 24.04.1 LTS| / |Overleaf| / % |LoongTeX| / |TeXPage| % 上的 \hologo{TeX} Live 2024 ä¸é¡ºåˆ©ç¼–译. % \hologo{MiKTeX} å‘è¡Œç‰ˆä»¥åŠ Windows å¹³å°æœªä½œæµ‹è¯•. 如在这些平å°ç¼–è¯‘æ— æ³•é€šè¿‡ï¼Œ % 建议转å‘在线平å°ï¼Œæœ¬æ¨¡æ¿åœ¨è¯¸å¤šåœ¨çº¿å¹³å°ç¼–译性能良好. % }. % 本模æ¿ç”Ÿæˆå¦ä½è®ºæ–‡æ—¶æ”¯æŒ \hologo{XeLaTeX}ã€\hologo{ApTeX} 与 \hologo{LuaLaTeX} % 编译;使用本模æ¿ç”Ÿæˆä¿¡çº¸ã€è¯•é¢˜è§£æžæ—¶æ”¯æŒæ‰€æœ‰ç¼–译方å¼. % % \subsection{æ ‡å‡†å®‰è£…} % % 强烈建议您使用 |tlmgr| 进行安装与å‡çº§. 在终端(Terminal) % 执行以下命令å³å¯å®‰è£…最新版本的 \hologo{hduthesis} 模æ¿. % \begin{quote} % "sudo tlmgr install hduthesis" % \end{quote} % % Windows ç³»ç»Ÿç”¨æˆ·æ— éœ€ |sudo|,请以管ç†å‘˜èº«ä»½è¿è¡Œå‘½ä»¤æ示符. % 有些时候,您需è¦æ‰‹åŠ¨æ›´æ–° |tlmgr| æ‰èƒ½æ£å¸¸ä½¿ç”¨ |tlmgr| 命令安装å®åŒ…. % \begin{quote} % "sudo tlmgr update --self" % \end{quote} % % å‡çº§è¯¥æ¨¡æ¿ï¼Œåœ¨ç»ˆç«¯ï¼ˆTerminal)执行以下命令å³å¯ % \begin{quote} % "sudo tlmgr update hduthesis" % \end{quote} % å‘行版 \hologo{TeX} Live 2025 以åŠæ›´æ–°ç‰ˆæœ¬å·²è‡ªå¸¦æœ¬æ¨¡æ¿ï¼Œæ— 需安装. åªéœ€åœ¨å¿…è¦æ—¶å‡çº§å³å¯. % % \subsection{手动安装} % % 本模æ¿é‡‡ç”¨ \pkg{l3build} 脚本进行打包. 用户å¯åœ¨ % \href{https://ctan.org/pkg/hduthesis}{CTAN}〠% \href{https://github.com/myhsia/hduthesis/}{GitHub} å’Œ % \href{https://gitee.com/myhsia/hduthesis}{Gitee} å¹³å° % Clone 项目\footnote{CTAN å¹³å°å¹¶æœªæä¾› \file{build.lua} 脚本}. % 解压åŽåœ¨å½“å‰ç›®å½•è¿è¡Œ % \begin{quote} % "l3build ctan"\\ % "l3build install" % \end{quote} % 会生æˆå¦‚ \ref{1.2.2} 所示的 Runtime 文件,并将模æ¿å®‰è£…至本地. % % \section{全局选项} % % \subsection{用户åè®®} % % 使用本模æ¿ç¼–译本科ã€ç¡•å£«å¦ä½è®ºæ–‡æ—¶é‡åˆ°``编译å—阻''报错,请认真阅读å°é¢çš„用户åè®®. % æ·»åŠ é€‰é¡¹ |agreed| åŽï¼ˆå³|\documentclass [ agreed ] { hduthesis }|), % æ–¹å¯é¡ºåˆ©ç¼–译,并默认您已åŒæ„用户åè®®. % % 使用 \hologo{hduthesis} 编译信纸ã€è¯•é¢˜è§£æžã€Beamer å’Œæœ¬ç”¨æˆ·æ‰‹å†Œæ—¶ï¼Œæ— éœ€ |agreed| 选项. % % \subsection{å—体设置} % % 用户å¯é€šè¿‡å…¨å±€é€‰é¡¹è®¾ç½®æ–‡æ¡£çš„æ•°å¦å’Œä¸æ–‡å—体. 设置的方å¼ä¸ºé”®å€¼å¯¹. % \begin{keyval} % \item [\key{math-font}] \val{font family name} 用于设置数å¦å—体. % \item [\key{CJKmain-font}] \val{xeCJK interface} 用于设置罗马æ—çš„ CJK å—体. % \item [\key{CJKsans-font}] \val{xeCJK interface} ç”¨äºŽè®¾ç½®æ— è¡¬çº¿æ—çš„ CJK å—体. % \item [\key{CJKmono-font}] \val{xeCJK interface} 用于设置ç‰å®½æ—çš„ CJK å—体. % \end{keyval} % \begin{verbatim} % \documentclass % [ % math-font = STIX Two Math, agreed, % CJKmain-font = {{Songti SC}[AutoFakeBold = 2.5, AutoFakeSlant]}, % CJKsans-font = {{STHeiti}[AutoFakeBold = 2]} % ] {hduthesis} % \end{verbatim} % æ›´åŠ è¯¦ç»†çš„å—体设置请å‚考 \pkg{xeCJK} å®åŒ…的文档. % % \section{文档信æ¯è®¾ç½®} % % \begin{function}{\hduset} % \begin{syntax} % \cs{DocInfo}\marg{key values} % \end{syntax} % æ¤å‘½ä»¤æŽ¥æ”¶é”®å€¼ï¼Œç”¨äºŽè®¾ç½®æ–‡æ¡£ä¿¡æ¯ï¼Œéœ€åœ¨å¯¼è¨€åŒºä¸æ‰§è¡Œ. % \begin{keyval} % \item [\key{title}] \val{list} 用于设置论文题目与å°é¢å¤§æ ‡é¢˜. % \item [\key{department}] \val{string} 用于设置å¦é™¢. % \item [\key{major}] \val{string} 用于设置专业. % \item [\key{class}] \val{string} 用于设置ç级. % \item [\key{stdntid}] \val{string} 用于设置å¦å·ï¼Œ % ä¼šæ ¹æ®è¾“入的å¦å·è‡ªåŠ¨é€‰æ‹©æœ¬ç§‘生/ç ”ç©¶ç”Ÿæ ¼å¼. % \item [\key{author}] \val{string} 用于设置作者. % \item [\key{supervisor}] \val{list} 用于设置导师. % \item [\key{bibsource}] \val{string} 用于设置æ’å…¥å‚考文献文件æº. % \end{keyval} % \end{function} % % æœ¬ç§‘ç”Ÿè¾“å…¥æ ·ä¾‹å¦‚ä¸‹. 考虑到ä¸åŒå¦é™¢å¯¹å°é¢æ ·å¼çš„è¦æ±‚ä¸åŒ |毕业论文|ã€|毕业设计|〠% |毕业论文(设计)|,\key*{title} æ供了接å£ä¾›è®¾ç½®å°é¢å¤§æ ‡é¢˜ï¼š % è®ºæ–‡é¢˜ç›®å’Œå¤§æ ‡é¢˜ä¹‹é—´ç”¨æ–œçº¿ (|/|) 分隔. 指导教师èŒç§°å’Œå§“å之间用åŠè§’å†’å· (|:|) 分隔. % \begin{verbatim} % \hduset % { % title = æ州电å科技大å¦å¦ä½è®ºæ–‡ \hologo{LaTeX} 模æ¿/ % 本科毕业设计, department = ç†å¦é™¢, % major = 物ç†å¦, stdntid = C668668E, % author = 申智能, bibsource = reference, % class = 英æ‰ç, supervisor = 教授:葉芷晴, % } % \end{verbatim} % % ç ”ç©¶ç”Ÿè¾“å…¥æ ·ä¾‹å¦‚ä¸‹. 硕士å¦ä½è®ºæ–‡æ‰‰é¡µéœ€åŒæ—¶æœ‰è‹±æ–‡ç‰ˆï¼Œå› æ¤éœ€è¦åœ¨é”® % \key*{title} \key*{author} \key*{supervisor} ä¸åˆ†åˆ«è¾“å…¥ä¸æ–‡å’Œè‹±æ–‡ä¿¡æ¯ï¼Œ % ä¸è‹±ä¿¡æ¯ä½¿ç”¨æ–œçº¿ (|/|) 分隔,指导教师èŒç§°å’Œå§“å之间用åŠè§’å†’å· (|:|) 分隔. % % \begin{verbatim} % \hduset % { % title = æ州电å科技大å¦å¦ä½è®ºæ–‡ \hologo{LaTeX} 模æ¿/ % \hologo{LaTeX} Template for Thesis at % Hangzhou Dianzi University, % major = 物ç†å¦, stdntid = 216686680, % author = 申智能/SAN Chi Nan, bibsource = reference % supervisor = 教授:葉芷晴/Prof.:YIP Tsz Ching, % } % \end{verbatim} % % \subsection{生æˆå°é¢ \& 扉页} % % \begin{function}{\maketitle} % 在æ£æ–‡åŒºåŸŸï¼Œä½¿ç”¨å‘½ä»¤ \cs{maketitle} å³å¯ç”Ÿæˆè®ºæ–‡å°é¢å’Œæ‰‰é¡µ. % 生æˆçš„å°é¢å’Œæ‰‰é¡µä¼šæ ¹æ®æ‰€è®¾ç½®çš„文档信æ¯è‡ªåŠ¨ç”Ÿæˆ. % \end{function} % % \DescribeMacro{\l__hduthesis_grade_int} % å°é¢ä¸Šçš„论文完æˆæ—¥æœŸå’Œå¦ç”Ÿæ¯•ä¸šå¹´ä»½ä¼šæ ¹æ®å½“å‰ç³»ç»Ÿæ—¶é—´è‡ªåŠ¨ç”Ÿæˆ. % 针对本科论文,如果当å‰æœˆä»½åœ¨8月åŠä»¥å‰ï¼Œæ¯•ä¸šå¹´ä»½ä¼šæ˜¾ç¤ºä»Šå¹´ï¼› % 如果当å‰æœˆä»½åœ¨9月åŠä»¥åŽï¼Œæ¯•ä¸šå¹´ä»½ä¼šæ˜¾ç¤ºæ¬¡å¹´. % 在 \cs{DocInfo} åŽå¯¹æ•´åž‹ \cs{l__hduthesis_grade_int} é‡æ–°èµ‹å€¼å¯æ‰‹åŠ¨æ›´æ”¹æ¯•ä¸šå¹´ä»½. % % \begin{quote} % "\ExplSyntaxOn"\\ % "\int_set:Nn \l__hduthesis_grade_int" \marg{Year}\\ % "\ExplSyntaxOff" % \end{quote} % % \subsection{生æˆæ‰¿è¯ºä¹¦} % % \begin{function}{\commitment} % \begin{syntax} % \cs{commitment} \oarg{file-date combined comma list} % \end{syntax} % % æ¤å‘½ä»¤ç”¨äºŽç”Ÿæˆæ‰¿è¯ºä¹¦. 命令的å¯é€‰å‚数接收数组,用于指定ç¾å文件和输入ç¾å的日期. % ç¾å文件和ç¾å的日期之间用 |/| 分隔,多组ç¾å之间用 |,| 分隔. % ç¾å文件接收 \file{.pdf} / \file{.png} / \file{.jpg} ç‰æ ¼å¼. % æ—¥æœŸçš„è¾“å…¥æ ¼å¼ä¸º |yyyy-mm-dd|. % \end{function} % % 对于本科生,åªéœ€è¦ç¾ç½² ``诚信承诺'' 一组ç¾åï¼› % å¯¹äºŽç ”ç©¶ç”Ÿï¼Œåˆ™éœ€è¦ç¾ç½² ``原创性声明''〠% ``(作者åŒæ„)å¦ä½è®ºæ–‡ä½¿ç”¨æŽˆæƒå£°æ˜Ž'' å’Œ % ``(导师åŒæ„)å¦ä½è®ºæ–‡ä½¿ç”¨æŽˆæƒå£°æ˜Ž'' 三组ç¾å. 使用用例如下 % % \begin{verbatim} % \begin{document} ... \maketitle % \commitment % [ example-image-a/2025-05-31, example-image-a/2025-05-31, % example-image-b/2025-06-01 ] % ... \end{document} % \end{verbatim} % % 如果使用者暂未生æˆç¾å但是需è¦æ·»åŠ 日期,则将ç¾å文件留空å³å¯ï¼Œä½†åˆ†éš”符 |/| ä»éœ€ä¿ç•™. 例如 % \verb|\commitment [ /2024-05-31 ]|. 如果ä¸éœ€è¦æ·»åŠ 日期,则直接留空å³å¯. % % 论文å°é¢ã€æ‰‰é¡µå’Œæ‰¿è¯ºä¹¦å¦‚下图. % å¯åœ¨ç»ˆç«¯æ‰§è¡Œ |texdoc hduthesis-bachelor| å’Œ |texdoc hduthesis-mphil| % 分别获å–本科和硕士å¦ä½è®ºæ–‡æ ·ä¾‹æ–‡ä»¶. % % \begin{center} % \begin{minipage}{.32\linewidth} % \centering % \fbox{^^A % \includegraphics[width = .94\linewidth, page = 1] % {hduthesis-bachelor.pdf}^^A % } % \end{minipage} \hspace*{\fill} % \begin{minipage}{.32\linewidth} % \centering % \fbox{^^A % \includegraphics[width = .94\linewidth, page = 2] % {hduthesis-bachelor.pdf}^^A % } % \end{minipage} \hspace*{\fill} % \begin{minipage}{.32\linewidth} % \centering % \fbox{^^A % \includegraphics[width = .94\linewidth, page = 1] % {hduthesis-mphil.pdf}^^A % } % \end{minipage}\\ % \begin{minipage}{.32\linewidth} % \centering % \fbox{^^A % \includegraphics[width = .94\linewidth, page = 2] % {hduthesis-mphil.pdf}^^A % } % \end{minipage} \hspace*{\fill} % \begin{minipage}{.32\linewidth} % \centering % \fbox{^^A % \includegraphics[width = .94\linewidth, page = 3] % {hduthesis-mphil.pdf}^^A % } % \end{minipage} \hspace*{\fill} % \begin{minipage}{.32\linewidth} % \centering % \fbox{^^A % \includegraphics[width = .94\linewidth, page = 4] % {hduthesis-mphil.pdf}^^A % } % \end{minipage} % \end{center} % % \section{ç« èŠ‚è®¾ç½®} % % \subsection{è¾“å…¥ä¸ / 英摘è¦} % % \DescribeEnv{abstract} % 环境 \env{abstract} 用于生æˆæ‘˜è¦ï¼Œå…¶å¯é€‰å‚æ•°å¯è®¾ç½®è¯è¨€æ ¼å¼. % % \begin{function}{\keywords} % 命令 \cs{keywords} 需在 \env{abstract} 环境内执行, % å…¶ä¼šæ ¹æ® \env{abstract} 环境所选择的è¯è¨€ï¼Œè‡ªåŠ¨ç”Ÿæˆè‹±æ–‡ / ä¸æ–‡æ ¼å¼çš„关键è¯. % \begin{quote} % |\begin{abstract}|\oarg{language}\\ % | ... |\\ % | |\cs{keywords}\marg{keywords list}\\ % |\end{abstract}| % \end{quote} % 通过命令 \cs{keywords} 以åŠè§’é€—å· (,) 为分隔输入关键è¯åˆ—表, % è¾“å‡ºæ—¶ä¼šæ ¹æ®æ‰€å¤„ \env{abstract} 环境选择的è¯è¨€ä¸åŒï¼Œè‡ªåŠ¨ä»¥åŠ / 全角分å·åˆ†éš”. % \end{function} % % \subsection{输入目录 \& æ£æ–‡} % % 通过命令 \cs{tableofcontents} å¯ç”Ÿæˆç›®å½•. \cs{chapter}ã€\cs{section}〠% \cs{subsection} ç‰ç« 节级次å‡æŒ‰ç…§ % \href{https://jwc.hdu.edu.cn/2022/0428/c4528a153813/page.htm} % {æ电ç†å·¥ç±»æ¯•ä¸šè®ºæ–‡å†™ä½œè§„范} 定制. % % \subsection{å‚考文献 \& 附录} % % 通过命令 \cs{DocInfo} 指定 \file{.bib} 文件åŽä½¿ç”¨å‘½ä»¤ \cs{printbiblography} % å³å¯è¾“出å‚考文献列表. å‚è€ƒæ–‡çŒ®æ ¼å¼å·²è®¾ç½®ä¸º |gb7714-2015|. % 若未指定å‚考文献 \file{.bib} æ–‡ä»¶ï¼Œä¸ºåŠ é€Ÿç¼–è¯‘ï¼Œ\pkg{gbt7714} å®åŒ…å°†ä¸ä¼šåŠ è½½. % % å¯ä»¥ç›´æŽ¥ä½¿ç”¨å¸¦æœ‰æ˜Ÿå·çš„ç« èŠ‚å‘½ä»¤ç”Ÿæˆé™„å½•ç« èŠ‚ï¼Œå¦‚ \verb|\chapter*{附录}|. % % \clearpage % % \section{é™„åŠ æ¨¡å—} % % \subsection{用户手册} % % 本手册为 \cls{hduthesis} åŠ è½½ \pkg{l3doc} 模å—åŽç”Ÿæˆï¼Œæ¤æ¨¡å—æ— éœ€ \pkg{agreed} 选项. % \begin{quote} % |\documentclass [ mode = l3doc ] { hduthesis }| % \end{quote} % \subsection{æ州电å科技大å¦ä¿¡ç¬º} % % åŠ è½½æ¨¡å— \pkg{stationery},并进行文档信æ¯è®¾ç½®ï¼Œå³å¯ç”Ÿæˆä¿¡çº¸. % å¯ç”¨äºŽæŽ¨è信撰写或生æˆç¬”记纸. æ¤æ¨¡å—æ— éœ€ \pkg{agreed} 选项. % \begin{quote} % |\documentclass [ mode = stationery ] { hduthesis }| % \end{quote} % 与å¦å£« / 硕士å¦ä½è®ºæ–‡æ–‡æ¡£ä¿¡æ¯è®¾ç½®ç±»ä¼¼ï¼Œä½¿ç”¨ \cs{DocInfo} 命令, % 对信件主题ã€å‘件人ã€é‚®ç®±ã€æ—¥æœŸå’Œæ°´å°è¿›è¡Œè®¾ç½®. æ¤æ—¶ \cs{DocInfo} 命令接å—é”® % \key*{title} \key*{author} \key*{mail} % \key*{date} \key*{watermark}. 下页为生æˆä¿¡çº¸çš„æ ·ä¾‹. % % \begin{verbatim} % \hduset % { % title = Recommendation Letter for SAN Chi Nan, % author = YIP Tsz Ching, mail = email@server.domain, % date = {23\textsuperscript{th} December, 2024}, % watermark = true % } % \begin{document} \maketitle ... \end{document} % \end{verbatim} % % \begin{function}{\notelines} % \begin{syntax} % \cs{notelines} \oarg{num} % \end{syntax} % ç”¨äºŽåœ¨ä¿¡çº¸ä¸Šæ·»åŠ ç¬”è®°çº¿ï¼Œå…¶å¯é€‰å‚数接收笔记线的数é‡ï¼Œé»˜è®¤å€¼ä¸º20. % 下页为生æˆçš„ä¿¡çº¸å’Œç¬”è®°çº¸æ ·ä¾‹ï¼Œå¯åœ¨ç»ˆç«¯æ‰§è¡Œ |texdoc hduthesis-stationery| % 获å–æ¤æ ·ä¾‹æ–‡ä»¶. % \end{function} % % \includepdf [ pages = -, nup = 1x2, angle = -90, frame, % linktodoc, scale = 0.96, delta = 0in .25in % ] {hduthesis-stationery} % % \subsection{Beamer 主题} % % 本模æ¿ä¸å˜åœ¨ç‹¬ç«‹çš„ Beamer 主题 |hdu|,用于生æˆæ州电å科技大å¦é£Žæ ¼çš„ Beamer å¹»ç¯ç‰‡. % 该主题目å‰æš‚ä¸å¼€æ”¾æ›´æ”¹ä¸»é¢˜è‰²æ电è“å’Œ Logo. % % åŠ è½½æ¨¡å— \pkg{beamer} åŽå¯é€šè¿‡ \cs{hduset} 接å£è®¾ç½®æ–‡æ¡£ä¿¡æ¯. % æ¤æ¨¡å—æ— éœ€ \pkg{agreed} 选项. % \begin{quote} % "\documentclass [ mode = beamer ] { hduthesis }" % \end{quote} % 与å¦å£« / 硕士å¦ä½è®ºæ–‡æ–‡æ¡£ä¿¡æ¯è®¾ç½®ç±»ä¼¼ï¼Œä½¿ç”¨ \cs{DocInfo} 命令, % 对信件主题ã€å‘件人ã€é‚®ç®±ã€æ—¥æœŸå’Œæ°´å°è¿›è¡Œè®¾ç½®. æ¤æ—¶ \cs{DocInfo} 命令接å—é”® % \key*{title} \key*{subtitle} \key*{author} \key*{date} \key*{supervisor} % \key*{reference}. 下页为生æˆBeamerçš„æ ·ä¾‹. % \begin{verbatim} % \hduset % { % title = Beamer Theme for Hangzhou Dianzi University % Based on \LaTeX3, % subtitle = hdu Undergraduate Thesis Proposal, % author = SAN Chi Nan (C668668E0), % date = {\today{} / Building 6, Room 321}, % supervisor = Prof. YIP Tsz Ching, % bibsource = reference.bib, % } % \end{verbatim} % % \subsection{HDU 试å·è§£æžæ¨¡å—} % % åŠ è½½æ¨¡å— \pkg{exam} åŽå³å¯ä½¿ç”¨æ¤æ¨¡å—, % æ¤æ¨¡å—æ— éœ€ \pkg{agreed} 选项. % \begin{quote} % "\documentclass [ mode = exam ] { hduthesis }" % \end{quote} % æ¤æ¨¡å—ä¸é¢„制了 \env{problem} å’Œ \env{solution} 环境. % % \includepdf [ pages = -, nup = 2x4, frame, linktodoc, % scale = 0.96, delta = .25in .2in % ] {hduthesis-beamer} % % \includepdf [ pages = -, nup = 1x2, angle = -90, frame, % linktodoc, scale = 0.96, delta = 0in .25in % ] {hduthesis-exam} % % \begin{thebibliography}{99} % \bibitem{interface3} The \hologo{LaTeX} Project. % The \hologo{LaTeX3} Interfaces. CTAN: Released 2025-03-10. % \bibitem{ctex} \url{CTEX.ORG}. C\hologo{TeX} å®é›†. 2022-07-14 v2.5.10. % \bibitem{clsguide} \hologo{LaTeX} Project Team. % \hologo{LaTeX} for package and class authors current version % \copyright{} Copyright 2023 -- 2024. 2024-09-15. % \bibitem{source2e} B. Johannes, C. David, J. Alan, L. Leslie L, M. Frank, % R. Chris, and S. Rainer. % \hologo{LaTeX} for package and class authors current version. % 2024-11-01 Patch level 2. % \bibitem{l3styleguide} The \hologo{LaTeX} Project. % The \hologo{LaTeX3} kernel: style guide for code authors. % CTAN: Released 2025-03-10. % \bibitem{packages} Package \pkg{etoolbox}, \pkg{geometry}, \pkg{tocloft}, % \pkg{fancyhdr}, etc. % \bibitem{hdubachelor} æ州电å科技大å¦æ•™åŠ¡å¤„. % \href{https://jwc.hdu.edu.cn/2022/0428/c4555a153813/page.htm} % {毕业设计(论文)的写作规范åŠæ ¼å¼è¦æ±‚} % \bibitem{hdumphil} æ州电å科技大å¦ç ”究生院. % \href{https://grs.hdu.edu.cn/2013/0507/c1730a51754/page.htm} % {æ州电å科技大å¦ç ”究生å¦ä½è®ºæ–‡æ ¼å¼ç»Ÿä¸€è¦æ±‚(æç”µç ”ã€”2012〕311å·ï¼‰} % \end{thebibliography} % \end{documentation} % \restoregeometry \appendix % \begin{implementation} % % \section{实现细节} % % \subsection{HDU æ ¡å¾½ \& æ ¡å \& æ ¡ç‰Œ \& æ ¡è®çš„实现} % % \subsubsection{åŽŸå§‹ç´ æ预处ç†} % % å‰å¾€ \href{https://www.hdu.edu.cn/666/list.htm}{æ ¡æƒ…çºµè§ˆ/æ ¡æ ‡è§„èŒƒ} % 资æºåŽï¼Œä½¿ç”¨ Inkscape(或 Adobe Illustrator,Affinity Design,Vectornator ç‰ï¼‰ % åˆ†åˆ«å°†æ ¡å¾½ã€æ ¡åã€æ ¡ç‰Œã€æ ¡è®å¯¼å‡º |.pdf| æ ¼å¼. æ ¡ç‰Œå¯èƒ½éœ€è¦æ‰‹åŠ¨å°†æ ¡å¾½ã€æ ¡å手动拼接. % % \subsubsection{PDF 文件处ç†} % % 由于å‘行版 \hologo{TeX} Live 2024 åŠæ›´æ—©ç‰ˆæœ¬ä¸çš„ |dvipdfmx| 程åºåœ¨ä»¥æŒ‡å®šé€æ˜Žåº¦æ’å…¥ç» % Inkscape 导出的 |.pdf| 文件时å˜åœ¨é€æ˜Žåº¦å¤±æ•ˆé—®é¢˜\footnote % {æ„Ÿè°¢ \hologo{TeX} 专家 \href{https://www.zhihu.com/people/li-a-ling} % {|@æŽé˜¿çŽ²|} ä¿®å¤äº†è¿™ä¸€ Bug (Commit: |fdefe61|).}, % 所以先使用 |Ghostscript| 程åºä¿®å¤ |.pdf| 文件 % \begin{quote} % "gs -o" \meta{input file}".pdf -sDEVICE=pdfwrite" \meta{output file}".pdf" % \end{quote} % æ¤æ—¶è‹¥ä½¿ç”¨ Text Editor 查看导出的 |.pdf| 文件,会å‘现里é¢å˜åœ¨è®¸å¤šæ— 法识别的å—符. % 这时需è¦ä½¿ç”¨ mutool 工具对 |.pdf| 文件的内容æµè¿›è¡Œæ¸…ç†ã€æ¶ˆæ¯’ã€åŽ‹ç¼©å’Œæ•°æ®è½¬æ¢. 命令如下 % \begin{quote} % "mutool clean -a -z -gggg" \meta{input file}".pdf" \meta{output file}".pdf" % \end{quote} % % \subsubsection{ç´ æ打包} % % 由于æ¯ä¸ª |.pdf| 文件å‡å˜åœ¨ä»¥ |%| 开头的代ç % \begin{verbatim} % %PDF-1.7 % %µ¶ % %%EOF % \end{verbatim} % 需更改 Docstrip å¤„ç† |%| 行为:|%| 改为 |%%|,|%%| 改为 |%%%|, % 并在 \file{hduthesis.ins} æ·»åŠ % \begin{quote} % "\let \MetaPrefix \perCent" % \end{quote} % 现å¯å°†å¤„ç†ç»“æŸåŽå¾—到 ASCII ç¼–ç çš„ |.pdf| 文件,打包至 \file{hdu-graphics.dtx}. % % \subsection{\file{hduthesis.cls} 的实现} % % \begin{macrocode} %<@@=hdu> % \end{macrocode} % % \begin{macrocode} %<*class> % \end{macrocode} % % \begin{macrocode} \def \hduthesis@date {2025-03-23} \def \hduthesis@version {1.1.1} \def \hduthesis@maintainerid {myhsia} % \end{macrocode} % % \begin{macrocode} \ProvidesExplClass {hduthesis} {\hduthesis@date} {\hduthesis@version} {LaTeX Template Bundle for Hangzhou Dianzi University} % \end{macrocode} % 兼容 \hologo{TeX} Live 2023 åŠä¹‹åŽçš„版本. 当对应命令ä¸å˜åœ¨æ—¶ï¼Œåœ¨å·²æœ‰å‘½ä»¤åŸºç¡€ä¸Šæ–°å¢žå˜ä½“ % \begin{macrocode} \cs_if_exist:NF \seq_set_split:Nne { \cs_generate_variant:Nn \seq_set_split:Nnn { Nne } } \cs_if_exist:NF \seq_set_split:Nee { \cs_generate_variant:Nn \seq_set_split:Nnn { Nee } } \cs_if_exist:NF \tl_set:Ne { \cs_generate_variant:Nn \tl_set:Nn { Ne } } \cs_if_exist:NF \tl_gset:Ne { \cs_generate_variant:Nn \tl_gset:Nn { Ne } } % \end{macrocode} % è¦å‘Šä¿¡æ¯è®¾ç½® % \begin{macrocode} \cs_new_protected:Npn \@@_msg_new:nn #1#2 { \msg_new:nnn { hduthesis } {#1} {#2} } \cs_new_protected:Npn \@@_msg_error:nn #1#2 { \msg_error:nnn { hduthesis } {#1} {#2} } \cs_generate_variant:Nn \@@_msg_error:nn { nx } \cs_new_protected:Npn \@@_msg_warning:nn #1#2 { \msg_warning:nnn { hduthesis } {#1} {#2} } \cs_generate_variant:Nn \@@_msg_warning:nn { nx } \@@_msg_new:nn { not found module } { The ~ hduthesis ~ module ~ `#1' ~ not ~ found. } \@@_msg_new:nn { unknown mode } { Unknown ~ hduthesis ~ mode ~ `#1',~ loading ~ mode ~ `thesis' ~ instead. } \@@_msg_new:nn { Users Agreement } { \exp_not:n { 编译å—阻!~ 使用模æ¿å‰è¯·é˜…读用户手册ä¸çš„「用户å议〠\MessageBreak !模æ¿ä½œè€… (@myhsia) ä¸å¯¹ä½¿ç”¨æœ¬æ¨¡æ¿äº§ç”Ÿçš„æ ¼å¼å®¡æŸ¥é—®é¢˜è´Ÿè´£! \MessageBreak 如果您åŒæ„å议,在全局选项ä¸æ·»åŠ `agreed' å³å¯è§£é™¤æœ¬é”™è¯¯ \MessageBreak 欢迎您通过邮件 (myhsia@hdu.edu.cn) 或 GitHub å馈æ„è§ } } % \end{macrocode} % \begin{macro}{\@@_load_module:n, \@@_provide_module:n} % åŠ è½½ / æä¾› \cls{hduthesis} çš„æ¨¡å— % \begin{macrocode} \cs_new_protected_nopar:Npn \@@_load_module:n #1 { \clist_map_inline:nn {#1} { \file_if_exist_input:nF { hdu-##1.code.tex } { \@@_msg_error:nn { not found module } {##1} } } } \cs_new_protected_nopar:Npn \@@_provide_module:n #1 { \ProvidesExplFile{hdu-#1.code.tex} {\hduthesis@date}{\hduthesis@version} {hduThesiS ~ \text_titlecase:n {#1} ~ Module} } % \end{macrocode} % \end{macro} % \begin{variable} % { % \g_@@_agreement_bool, \g_@@_mode_tl, % \g_@@_math_font, \g_@@_main_CJK_font, % \g_@@_sans_CJK_font, \g_@@_mono_CJK_font % } % 定义文档类全局选项的键. % \begin{macrocode} \keys_define:nn { hduthesis / classoption } { agreed .bool_set:N = \g_@@_agreement_bool, agreed .initial:n = false, agreed .default:n = true, mode .tl_set:N = \g_@@_mode_tl, math-font .tl_set:N = \g_@@_math_font, CJKmain-font .tl_set:N = \g_@@_main_CJK_font, CJKsans-font .tl_set:N = \g_@@_sans_CJK_font, CJKmono-font .tl_set:N = \g_@@_mono_CJK_font, unknown .code:n = \@@_unknown_option:n {#1}, } % \end{macrocode} % \end{variable} % \begin{macro}{\@@_unknown_option:n} % \begin{variable}{\g_@@_base_options_clist} % 用于接收其他对æ¤æ–‡æ¡£ç±»æœªçŸ¥é€‰é¡¹. % \begin{macrocode} \clist_new:N \g_@@_base_options_clist % \end{macrocode} % \end{variable} % 处ç†æœªçŸ¥é€‰é¡¹ï¼šç§»äº¤åŸºæœ¬æ–‡æ¡£ç±»å¤„ç†. % \begin{macrocode} \cs_new_protected_nopar:Npn \@@_unknown_option:n #1 { \tl_if_empty:nTF { #1 } { \clist_gput_right:NV \g_@@_base_options_clist \l_keys_key_str } { \exp_args:NNx \clist_gput_right:Nn \g_@@_base_options_clist { \l_keys_key_str = \exp_not:n {#1} } } } % \end{macrocode} % \end{macro} % 处ç†æŽ¥æ”¶åˆ°çš„全局选项. % \begin{macrocode} \ProcessKeyOptions [ hduthesis / classoption ] % \end{macrocode} % é‡åˆ°æœªçŸ¥æ¨¡å—时返回è¦å‘Šä¿¡æ¯. % \begin{macrocode} \bool_lazy_all:nT { { !\str_if_empty_p:N \g_@@_mode_tl } { !\str_if_eq_p:ee { \g_@@_mode_tl } { thesis } } { !\str_if_eq_p:ee { \g_@@_mode_tl } { beamer } } { !\str_if_eq_p:ee { \g_@@_mode_tl } { stationery } } { !\str_if_eq_p:ee { \g_@@_mode_tl } { exam } } { !\str_if_eq_p:ee { \g_@@_mode_tl } { l3doc } } } { \@@_msg_warning:nx { unknown mode } { \g_@@_mode_tl } } % \end{macrocode} % åŠ è½½ \module{beamer} 模å—. % \begin{macrocode} \str_if_eq:eeT { \g_@@_mode_tl } { beamer } { \PassOptionsToClass { aspectratio = 2013 } { beamer } \exp_args:NNV \LoadClass [ \g_@@_base_options_clist ] { beamer } \usetheme{hdu} \endinput } % \end{macrocode} % åŠ è½½ \module{stationery} 模å—. % \begin{macrocode} \str_if_eq:eeT { \g_@@_mode_tl } { stationery } { \PassOptionsToClass { 12pt } { letter } \exp_args:NNV \LoadClass [ \g_@@_base_options_clist ] { letter } \@@_load_module:n { stationery } \endinput } % \end{macrocode} % åŠ è½½ \module{exam} 模å—. % \begin{macrocode} \str_if_eq:eeT { \g_@@_mode_tl } { exam } { \exp_args:NNV \LoadClass [ \g_@@_base_options_clist ] { article } \@@_load_module:n { exam } \endinput } % \end{macrocode} % åŠ è½½ \module{l3doc} 模å—. % \begin{macrocode} \str_if_eq:eeT { \g_@@_mode_tl } { l3doc } { \PassOptionsToClass { 11pt, letterpaper, kernel } { l3doc } \RequirePackage{minted} \exp_args:NNV \LoadClass [ \g_@@_base_options_clist ] { l3doc } \@@_load_module:n { l3doc } \endinput } % \end{macrocode} % å…¶ä½™æƒ…å†µä¸‹ï¼Œé»˜è®¤åŠ è½½ \module{thesis} 模å—ï¼Œå¹¶æ ¹æ®æ‰€è¾“入的å¦å·ä½æ•°åŠ è½½ä¸åŒé…ç½®. % 未确认用户å议时,返回错误信æ¯. % \begin{macrocode} \bool_lazy_any:nT { { \str_if_eq_p:ee { \g_@@_mode_tl } { thesis } } { !\str_if_eq_p:ee { \g_@@_mode_tl } { beamer } } { !\str_if_eq_p:ee { \g_@@_mode_tl } { stationery } } { !\str_if_eq_p:ee { \g_@@_mode_tl } { exam } } { !\str_if_eq_p:ee { \g_@@_mode_tl } { l3doc } } } { \PassOptionsToClass { a4paper, zihao = -4 } { ctexrep } \PassOptionsToPackage { quiet, no-math } { xeCJK } \exp_args:NNV \LoadClass [ \g_@@_base_options_clist ] { ctexrep } \bool_if:NTF \g_@@_agreement_bool { \RequirePackage{hyperref} \pdfstringdefDisableCommands { \def \cite#1 {<#1>} \def \hologoRobust#1 {<#1>} } \AtBeginDocument { \hypersetup { hidelinks, pdfproducer = hduThesiS ~ by ~ Mingyu ~ Xia } } } { \@@_msg_error:nn { Users Agreement } { Unconfirmed } } \@@_load_module:n { typeset } \@@_load_module:n { layout } \cs_new_protected:Nn \@@_docinfo_degree_if_aux: { \int_compare:nNnTF { \tl_count:N \l_@@_set_stdntid_tl } = { 8 } { \@@_load_module:n { bc.config } } { \@@_load_module:n { pg.config } } } \endinput } % \end{macrocode} % % \begin{macrocode} %</class> % \end{macrocode} % % \subsection{\module{typeset} 模å—的实现} % % \begin{macrocode} %<*typeset> % \end{macrocode} % % \begin{macrocode} \@@_provide_module:n {typeset} % \end{macrocode} % % \begin{macrocode} \RequirePackage { circuitikz, pgfplots, listings, hologo, lipsum, zhlipsum, booktabs, multicol } \pgfplotsset { compat = newest } % \end{macrocode} % æ’图相对路径设置. % \begin{macrocode} \graphicspath { {./figure/} {./figures/} {./image/} {./images/} {./graphics/} {./graphic/} {./pictures/} {./picture/} } % \end{macrocode} % 设置行è·å€æ•°ã€ç¼©è¿›å’Œå…¬å¼å‰åŽé—´è·. % \begin{macrocode} \linespread{1.39} \AtBeginDocument { \dim_set:Nn \abovedisplayskip {3pt} \dim_set:Nn \belowdisplayskip {3pt} \dim_set:Nn \parindent { 2\ccwd } } % \end{macrocode} % å…¬å¼æŽ’版必è¦å®åŒ…åŠ è½½ï¼Œè¡Œé—´å…¬å¼å‰åŽé—´è·è®¾ç½®. % \begin{macrocode} \RequirePackage { mathtools, amssymb, cancel, fixdif, derivative, siunitx, physics2, bm } \usephysicsmodule { ab, braket, op.legacy, qtext.legacy } % \end{macrocode} % \begin{macro}{\@@_font_semilarge:, \@@_font_semiLarge:} % 两ç§æ–°å—体尺寸设置. % \begin{macrocode} \cs_new_protected:Nn \@@_font_semilarge: { \@setfontsize \@@_font_semilarge:{14}{16.5} } \cs_new_protected:Nn \@@_font_semiLarge: { \@setfontsize \@@_font_semiLarge:{16.5}{17.5} } % \end{macrocode} % \end{macro} % 设置西文å—体ã€æ•°å¦å—体ã€ä¸æ–‡å—体. % \begin{macrocode} \sys_if_engine_xetex:T { \RequirePackage [ warnings-off = { mathtools-colon, mathtools-overbracket } ] {unicode-math} \setmainfont{texgyretermes} [ Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic ] \setsansfont{texgyreheros} [ Extension = .otf, BoldItalicFont = *-bolditalic, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, Scale = .9 ] \tl_if_empty:NF \g__hdu_math_font { \setmathfont { \g__hdu_math_font } } \tl_if_empty:NF \g__hdu_main_CJK_font { \exp_last_unbraced:No \setCJKmainfont \g__hdu_main_CJK_font } \tl_if_empty:NF \g__hdu_sans_CJK_font { \exp_last_unbraced:No \setCJKsansfont \g__hdu_sans_CJK_font } \tl_if_empty:NF \g__hdu_mono_CJK_font { \exp_last_unbraced:No \setCJKmonofont \g__hdu_mono_CJK_font } } % \end{macrocode} % % \begin{macrocode} %</typeset> % \end{macrocode} % % \subsection{\module{layout} 模å—的实现} % % \begin{macrocode} %<*layout> % \end{macrocode} % % \begin{macrocode} \@@_provide_module:n {layout} % \end{macrocode} % 页é¢æ ·å¼ã€ç¼–å·ã€åˆ—表设置. % \begin{macrocode} \RequirePackage { geometry, array, setspace, fancyhdr, enumitem, cleveref } \RequirePackage [ skip = 1.75ex, labelsep = quad, font = small ]{caption} \fancyhf{} \pagestyle{fancy} \renewcommand*\headrulewidth {.8pt} \renewcommand*\thefigure {\arabic{chapter}-\arabic{figure}} \renewcommand*\thetable {\arabic{chapter}-\arabic{table}} \renewcommand*\theequation {\arabic{chapter}-\arabic{equation}} \AddToHook{env/figure/after}{\vspace*{-2.3ex}} \AddToHook{env/table/after}{\vskip-1.9ex} \setlist[enumerate,1] { label = (\,\arabic*\,), itemindent = 4em, leftmargin = 0em, labelsep = 1ex, topsep = 0pt, itemsep = 0pt, partopsep = 0pt, parsep = 0em, listparindent = 2\ccwd } \crefformat{figure}{图#2#1#3} \crefformat{table}{表#2#1#3} % \end{macrocode} % \begin{macro}{\@@_cover_spread_box:nn, \@@_cover_center_box:nn} % 分散对é½ç›’å与 下划线居ä¸å¯¹é½ç›’å. % \footnote{ç”± \url{tex.stackexchange.com} 论å›ä¸Š |@egreg| æ供接å£.} % \begin{macrocode} \cs_new_protected:Npn \@@_cover_spread_box:nn #1#2 { \mode_leave_vertical: \hbox_to_wd:nn {#1} { \exp_args:Nee \tl_map_inline:nn {#2} { ##1 \hfil } \unskip } } \cs_new_protected:Npn \@@_cover_center_box:nn #1#2 { \mode_leave_vertical: \dim_set:Nn \l_tmpa_dim {#1} \global\setbox1 = \box\voidb@x \group_begin: \setbox0 = \vbox { \dim_set:Nn \hsize {#1}\relax \dim_set:Nn \parindent {0pt} \skip_set:Nn \leftskip {0pt plus 1fil} \skip_set:Nn \rightskip {0pt plus -1fil} \skip_set:Nn \parfillskip {0pt plus 2fil} #2 \par \loop \setbox2 = \lastbox \unless\ifvoid2 \global\setbox1 = \vtop { \hbox to\hsize{\strut\unhbox2} \vskip-4pt \hrule height .5pt \vskip9.6pt \unvbox1 } \unskip\unpenalty \repeat } \group_end: \box1 } % \end{macrocode} % \end{macro} % \begin{macro}{\@@_process_array:NnnN} % 拆分 \cs{hduset} 部分键值输入二维数组. % \begin{macrocode} \cs_new_protected_nopar:Npn \@@_process_array:NnnN #1#2#3#4 { \seq_set_split:Nee \l_@@_process_array_seq { / } {#1} \seq_set_split:Nee \l_@@_process_array_row_seq { \c_colon_str } { \seq_item:Nn \l_@@_process_array_seq {#2} } \tl_if_eq:nnTF {#3} {:} { \tl_gset:Ne #4 { \seq_use:Nn \l_@@_process_array_row_seq {} } } { \tl_gset:Ne #4 { \seq_item:Nn \l_@@_process_array_row_seq {#3} } } \seq_clear:N \l_@@_process_array_seq \seq_clear:N \l_@@_process_array_row_seq } % \end{macrocode} % \end{macro} % \begin{variable}{\g_@@_month_clist} % å˜å‚¨è‹±æ–‡æœˆä»½è¡¨è¾¾. % \begin{macrocode} \clist_set:Nn \g_@@_month_clist { January, February, March, April, May, June, July, August, September, October, November, December } % \end{macrocode} % \end{variable} % \begin{variable} % { % \l_@@_set_title_tl, \l_@@_set_department_tl, % \l_@@_set_major_tl, \l_@@_set_class_tl, % \l_@@_set_stdntid_tl, \l_@@_set_author_tl, % \l_@@_set_supervisor_tl, \l_@@_set_bibsource_tl % } % æ¨¡å¼ \module{thesis} 下 \cs{hduset} 接å£é”®å€¼çš„定义. % \begin{macrocode} \keys_define:nn { thesis / hduset } { title .clist_set:N = \l_@@_set_title_tl, department .tl_set:N = \l_@@_set_department_tl, major .tl_set:N = \l_@@_set_major_tl, class .tl_set:N = \l_@@_set_class_tl, stdntid .tl_set:N = \l_@@_set_stdntid_tl, author .clist_set:N = \l_@@_set_author_tl, supervisor .tl_set:N = \l_@@_set_supervisor_tl, bibsource .tl_set:N = \l_@@_set_bibsource_tl, } % \end{macrocode} % \end{variable} % \begin{macro}{\hduset} % æ¨¡å¼ \module{thesis} 下设置文档信æ¯. % \begin{macrocode} \NewDocumentCommand \hduset { m } { \keys_set:nn { thesis / hduset } {#1} \@@_docinfo_process_aux: \@@_docinfo_degree_if_aux: } % \end{macrocode} % \end{macro} % \begin{macro}{\@@_docinfo_process_aux:} % æ¨¡å¼ \module{thesis} 下 \cs{hduset} 的辅助命令:拆分数组 / 设置å‚考文献. % \begin{macrocode} \cs_set_protected_nopar:Nn \@@_docinfo_process_aux: { \@@_process_array:NnnN \l_@@_set_title_tl {1} {:} \@title \@@_process_array:NnnN \l_@@_set_title_tl {2} {:} \l_@@_set_entitle_tl \@@_process_array:NnnN \l_@@_set_author_tl {1} {:} \@author \@@_process_array:NnnN \l_@@_set_author_tl {2} {:} \l_@@_set_enauthor_tl \@@_process_array:NnnN \l_@@_set_supervisor_tl {1} {1} \l_@@_set_cnrole_tl \@@_process_array:NnnN \l_@@_set_supervisor_tl {1} {2} \l_@@_set_cnsupervisor_tl \@@_process_array:NnnN \l_@@_set_supervisor_tl {2} {1} \l_@@_set_enrole_tl \@@_process_array:NnnN \l_@@_set_supervisor_tl {2} {2} \l_@@_set_ensupervisor_tl \bool_if:NF \g_@@_agreement_bool { \tl_clear:N \l_@@_set_bibsource_tl } \tl_if_empty:NTF \l_@@_set_bibsource_tl { \newcommand*\printbibliography{\chapter*{å‚考文献}} \newcounter {citecount} \renewcommand*\cite[1] { \refstepcounter{citecount} \textsuperscript{[\thecitecount]} } } { \RequirePackage[sort&compress]{gbt7714} \bibliographystyle{gbt7714-numerical} \dim_set:Nn \bibsep {.35ex} \newcommand*\printbibliography { \bibliography { \l_@@_set_bibsource_tl } \addcontentsline{toc}{chapter}{å‚考文献} } } } % \end{macrocode} % \end{macro} % \begin{macro}{\@@_commitment_sign:N} % æ’å…¥ç¾å图片. % \begin{macrocode} \cs_new_protected:Npn \@@_commitment_sign:N #1 { \leavevmode@ifvmode \lower \dimexpr \f@size\p@ * 9/16 \hbox { \includegraphics [ height = { \fp_eval:n { 2*\f@size }\p@ } ] {#1} } } % \end{macrocode} % \end{macro} % \begin{macro}{\@@_sign_process_aux:nnn} % 处ç†æ‰¿è¯ºä¹¦ç¾å数组的辅助命令. ç¾å文件å需è¦å±•å¼€åŽå˜å…¥ % \cs{l_@@_sign_figure_tl} ä¸. % \begin{macrocode} \cs_new_protected_nopar:Npn \@@_sign_process_aux:nnn #1#2#3 { \clist_set:Nn \l_@@_sign_process_clist {#1} \seq_set_split:Nne \l_@@_sign_figure_seq {/} { \clist_item:Nn \l_@@_sign_process_clist {#2} } \int_compare:nNnTF {#3} = {0} { \tl_set:Ne \l_@@_sign_figure_tl { \seq_item:Nn \l_@@_sign_figure_seq { #3 + 1 } } \seq_clear:N \l_@@_sign_figure_seq } { \seq_set_split:Nne \l_@@_sign_date_seq {-} { \seq_item:Nn \l_@@_sign_figure_seq {2} } \seq_item:Nn \l_@@_sign_date_seq {#3} \seq_clear:N \l_@@_sign_date_seq } \clist_clear:N \l_@@_sign_process_clist } % \end{macrocode} % \end{macro} % % \begin{macrocode} %</layout> % \end{macrocode} % % \subsection{\module{bc.config} 模å—的实现} % % \begin{macrocode} %<*bc.config> % \end{macrocode} % % \begin{macrocode} \ExplSyntaxOn \makeatletter % \end{macrocode} % % \begin{macrocode} \@@_provide_module:n {bc.config} % \end{macrocode} % 设置页é¢å¸ƒå±€ã€é¡µçœ‰ã€ç›®å½•é¡µç æ ¼å¼. % \begin{macrocode} \geometry { top = 3.25cm, bottom = 2.4cm, left = 4cm, right = 2cm, headsep = .72cm, headheight = 15pt } \fancyhead[C] { \raisebox { .12ex } { \small æ州电åç§‘æŠ€å¤§å¦ \l_@@_set_entitle_tl } } \hook_gput_code:nnn {cmd/tableofcontents/before} { . } { \clearpage \pagenumbering{Roman} \cfoot{\small \thepage} } \hook_gput_code:nnn { cmd/tableofcontents/after } { . } { \thispagestyle{fancy} \clearpage \pagenumbering{arabic} \cfoot{} } % \end{macrocode} % \begin{macro}{\maketitle} % é‡æ–°å®šä¹‰å°é¢å¸ƒå±€. % \begin{macrocode} \RenewDocumentCommand \maketitle {} { \newgeometry { margin = 3cm } \titlepage \@@_maketitle_bc_auxi: \endtitlepage \restoregeometry } % \end{macrocode} % \end{macro} % \begin{variable}{\l_@@_grade_int} % å˜å‚¨æ¯•ä¸šå¹´ä»½. æ ¹æ®å½“å‰æœˆä»½åˆ¤æ–. % \begin{macrocode} \int_new:N \l_@@_grade_int \int_set:Nn \l_@@_grade_int { \int_compare:nNnTF { \c_sys_month_int } < 9 { \c_sys_year_int } { \int_eval:n { \c_sys_year_int + 1 } } } % \end{macrocode} % \end{variable} % \begin{macro}{\@@_maketitle_bc_auxi:} % \cs{maketitle} 的辅助命令. % \begin{macrocode} \cs_new_protected_nopar:Nn \@@_maketitle_bc_auxi: { \begin{center} \vspace*{14\p@} \includegraphics[ width = .64\linewidth ]{hdu-title} \par \vspace*{36\p@} \scalebox{2.75} { \textbf { \@@_cover_spread_box:nn { .205\paperwidth } { \l_@@_set_entitle_tl } } } \par \vspace*{1.5\baselineskip} { \LARGE (\int_use:N \l_@@_grade_int \bfseries 届) } \par \vspace*{3.0\baselineskip} \begin{tabular} { >{\large\bfseries}p{5.5\ccwd}@{} >{\large\centering\arraybackslash\kaishu}p{.65\linewidth}@{} } \@@_cover_spread_box:nn { 4\ccwd } { 题目 } & \@@_cover_center_box:nn { .95\linewidth } { \@title }\\[5.2ex] \@@_cover_spread_box:nn { 4\ccwd } { å¦é™¢ } & \@@_cover_center_box:nn { .95\linewidth } { \l_@@_set_department_tl }\\[5.2ex] \@@_cover_spread_box:nn { 4\ccwd } { 专业 } & \@@_cover_center_box:nn { .95\linewidth } { \l_@@_set_major_tl }\\[5.2ex] \@@_cover_spread_box:nn { 4\ccwd } { ç级 } & \@@_cover_center_box:nn { .95\linewidth } { \l_@@_set_class_tl }\\[5.2ex] \@@_cover_spread_box:nn { 4\ccwd } { å¦å· } & \@@_cover_center_box:nn { .95\linewidth } { \l_@@_set_stdntid_tl }\\[5.2ex] \@@_cover_spread_box:nn { 4\ccwd } { å¦ç”Ÿå§“å } & \@@_cover_center_box:nn { .95\linewidth } { \@author }\\[5.2ex] \@@_cover_spread_box:nn { 4\ccwd } { 指导教师 } & \@@_cover_center_box:nn { .95\linewidth } { \l_@@_set_cnsupervisor_tl \quad \l_@@_set_cnrole_tl }\\[5.2ex] \@@_cover_spread_box:nn { 4\ccwd } { 完æˆæ—¥æœŸ } & \@@_cover_center_box:nn { .95\linewidth } { \textsf{\int_use:N \c_sys_year_int} å¹´ \textsf{\int_use:N \c_sys_month_int} 月 } \end{tabular} \end{center} } % \end{macrocode} % \end{macro} % \begin{macro}{\commitment} % 生æˆæ‰¿è¯ºä¹¦ % \begin{macrocode} \NewDocumentCommand \commitment { O{} } { \newgeometry{ margin = 3cm } \titlepage \@@_commitment_bc_aux:n {#1} \endtitlepage \restoregeometry } % \end{macrocode} % \end{macro} % \begin{macro}{\@@_commitment_bc_aux:n} % \cs{commitment} 的辅助命令. % \begin{macrocode} \cs_new_protected_nopar:Npn \@@_commitment_bc_aux:n #1 { \vspace*{65\p@} \begin{center} \@beginparpenalty \@lowpenalty \Large \textsf { \bfseries \@@_cover_spread_box:nn { 6\ccwd }{ 诚信承诺 } } \@endparpenalty \@M \end{center} \vspace*{.4\baselineskip} \par \linespread{2.1} { \@@_font_semilarge: 我谨在æ¤æ‰¿è¯ºï¼šæœ¬äººæ‰€å†™çš„毕业论文《\@title 》å‡ç³»æœ¬äººç‹¬ç«‹å®Œæˆï¼Œ 没有抄è¢è¡Œä¸ºï¼Œå‡¡æ¶‰åŠå…¶ä»–作者的观点和æ料,å‡ä½œäº†æ³¨é‡Šï¼Œè‹¥æœ‰ä¸å®žï¼Œ åŽæžœç”±æœ¬äººæ‰¿æ‹…。 \par\vspace*{\baselineskip} \bfseries\sffamily \hskip.48\linewidth 承诺人(ç¾å): \@@_sign_process_aux:nnn {#1} { 1 } { 0 } \tl_if_empty:NF \l_@@_sign_figure_tl { \@@_commitment_sign:N \l_@@_sign_figure_tl \tl_clear:N \l_@@_sign_figure_tl } \par \vspace*{.5\baselineskip} \hskip \dim_eval:n { .48\linewidth - 1em } \makebox [ 3em ] { \@@_sign_process_aux:nnn {#1} { 1 } { 1 } } å¹´ \makebox [ 2em ] { \@@_sign_process_aux:nnn {#1} { 1 } { 2 } } 月 \makebox [ 2em ] { \@@_sign_process_aux:nnn {#1} { 1 } { 3 } } æ—¥ } } % \end{macrocode} % \end{macro} % \DescribeEnv{abstract} % é‡æ–°å®šä¹‰æ‘˜è¦çŽ¯å¢ƒï¼ŒåŠ å…¥ä¸è‹±æ–‡åˆ¤æ–. % \begin{macrocode} \RenewDocumentEnvironment {abstract} { O{en} } { \str_if_eq:nnT {#1} {en} { \tl_set:Nn \l_@@_keywords_name_tl {Keywords:~} \tl_set:Nn \l_@@_keywords_sep_tl {;~} \@beginparpenalty \@lowpenalty \chapter*{\normalfont\bfseries ABSTRACT} } \str_if_eq:nnT {#1} {cn} { \tl_set:Nn \l_@@_keywords_name_tl {\textsf{关键è¯ï¼š}} \tl_set:Nn \l_@@_keywords_sep_tl {ï¼›} \@beginparpenalty \@lowpenalty \chapter*{摘\qquad è¦} } } { \tl_clear:N \l_@@_abstract_title_tl \cfoot{} \clearpage } % \end{macrocode} % \begin{variable}{\l_@@_keywords_clist} % å˜å‚¨å…³é”®è¯åˆ—表. % \begin{macrocode} \clist_new:N \l_@@_keywords_clist % \end{macrocode} % \end{variable} % \begin{macro}{\keywords} % é‡æ–°å®šä¹‰ \cs{keywords} 命令,关键è¯æ ·å¼ä¼šæ ¹æ® \env{abstract} 所选è¯è¨€è‡ªåŠ¨å˜åŒ–. % \begin{macrocode} \NewDocumentCommand \keywords { m } { \par \vspace*{\baselineskip} \noindent\textbf{\l_@@_keywords_name_tl} \clist_set:Nn \l_@@_keywords_clist {#1} \clist_use:Nn \l_@@_keywords_clist {\l_@@_keywords_sep_tl} } % \end{macrocode} % \end{macro} % è®¾ç½®ç›®å½•æ ·å¼. % \begin{macrocode} \RequirePackage{tocloft} \renewcommand \contentsname {\hfill ç›® \qquad 录 \hfill} \renewcommand* \cfttoctitlefont {\sffamily\@@_font_semiLarge:} \dim_set:Nn \cftbeforetoctitleskip {3pt} \dim_set:Nn \cftaftertoctitleskip {24pt} \dim_set:Nn \cftbeforechapskip {1pt} \dim_set:Nn \cftbeforesecskip {-.2pt} \patchcmd { \@dottedtocline } { \leaders \hbox { $\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ } } { \kern 4pt \leaders \hbox { $\m@th\mkern .4 mu\hbox{-}\mkern .4 mu$ } } {}{} \renewcommand* \l@chapter {\@dottedtocline{1}{0em}{1.6em}} \renewcommand* \l@section {\@dottedtocline{1}{2.3em}{2.1em}} \renewcommand* \@dotsep {1.7} \renewcommand* \@pnumwidth {2.5ex} \renewcommand* \cftchapfont {\normalfont} \setcounter{tocdepth}{1} % \end{macrocode} % 使用 \cs{ctexset} æ供的接å£è®¾ç½®ç« èŠ‚æ ·å¼. % \begin{macrocode} \ctexset { chapter = { fixskip = true, name = {}, beforeskip = 21pt, format+ = \sffamily \large, afterskip = 34pt, number = \arabic{chapter}, pagestyle = fancy, }, section = { beforeskip = 1.25ex, fixskip = true, afterskip = 1.5ex, format = \sffamily \@@_font_semilarge: }, subsection = { beforeskip = 1.25ex, fixskip = true, afterskip = 1.5ex, format = \sffamily } } % \end{macrocode} % % \begin{macrocode} \makeatother \ExplSyntaxOff % \end{macrocode} % % \begin{macrocode} %</bc.config> % \end{macrocode} % % \subsection{\module{pg.config} 模å—的实现} % % \begin{macrocode} %<*pg.config> % \end{macrocode} % % \begin{macrocode} \ExplSyntaxOn \makeatletter % \end{macrocode} % % \begin{macrocode} \@@_provide_module:n {pg.config} % \end{macrocode} % 设置页é¢å¸ƒå±€ã€é¡µçœ‰ã€ç›®å½•é¡µç æ ¼å¼. % \begin{macrocode} \geometry { top = 2.8cm, bottom = 3.2cm, left = 3.2cm, right = 3.2cm, headheight = 15pt, headsep = .72cm, footskip = 1.5cm } \fancyhead[C] { \raisebox { .12ex } { \small æ州电å科技大å¦ç¡•å£«å¦ä½è®ºæ–‡ } } \hook_gput_code:nnn { cmd/tableofcontents/after } { . } { \clearpage \pagenumbering{arabic} \cfoot{\small \thepage} } % \end{macrocode} % é‡æ–°å®šä¹‰å°é¢å¸ƒå±€. % \begin{macrocode} \RenewDocumentCommand \maketitle {} { \newgeometry{margin = 2.75cm} \begin{titlepage} \@@_maketitle_pg_auxi: \end{titlepage} \titlepage \@@_maketitle_pg_auxii: \endtitlepage \titlepage \@@_maketitle_pg_auxiii: \endtitlepage \restoregeometry \pagenumbering{Roman} \cfoot {\small \thepage} } % \end{macrocode} % \begin{macro} % {\@@_maketitle_pg_auxi:, \@@_maketitle_pg_auxii:, \@@_maketitle_pg_auxiii:} % \cs{maketitle} 的辅助命令:å°é¢è®¾ç½®ã€ä¸æ–‡æ‰‰é¡µè®¾ç½®ã€è‹±æ–‡æ‰‰é¡µè®¾ç½®. % \begin{macrocode} \cs_new_protected_nopar:Nn \@@_maketitle_pg_auxi: { \begin{center} \null \includegraphics[height = 2.35cm]{hdu-title} \par \vspace*{40\p@} { \LARGE \@@_cover_spread_box:nn {.575\linewidth} {硕士å¦ä½è®ºæ–‡} } \par\vspace*{100\p@} \@@_font_semiLarge: 题 \qquad 目: \@@_cover_center_box:nn { .75\linewidth } { \kaishu \@title } \vspace*{24\p@}\par \begin{tabular} { >{ \@@_font_semiLarge: \centering \arraybackslash } p{4\ccwd}@{} >{ \@@_font_semiLarge: \centering \arraybackslash \kaishu } p{.65\linewidth}@{} } \@@_cover_spread_box:nn { 4\ccwd } { ç ”ç©¶ç”Ÿ } & \@@_cover_center_box:nn { .96\linewidth } { \@author }\\ \@@_cover_spread_box:nn { 4\ccwd } { 专业 } & \@@_cover_center_box:nn { .96\linewidth } { \l_@@_set_major_tl }\\ \@@_cover_spread_box:nn { 4\ccwd } { 指导教师 } & \@@_cover_center_box:nn { .96\linewidth } { \l_@@_set_cnsupervisor_tl \qquad \l_@@_set_cnrole_tl }\\[13.5ex] \@@_font_semilarge: 完æˆæ—¥æœŸ & \@@_cover_center_box:nn { .96\linewidth } { \@@_font_semilarge: \textsf { \int_use:N \c_sys_year_int } å¹´ \textsf { \int_use:N \c_sys_month_int } 月 } \end{tabular} \end{center} } \cs_new_protected_nopar:Nn \@@_maketitle_pg_auxii: { \begin{center} \vspace*{25\p@} { \LARGE æ州电å科技大å¦ç¡•å£«å¦ä½è®ºæ–‡ } \vspace*{140\p@} \par \begin{spacing}{1.15} \huge\textsf{ \@title } \end{spacing} \vspace*{128\p@} \par \begin{tabular} { >{ \@@_font_semiLarge: } p{6.25\ccwd} >{ \@@_font_semiLarge: \kaishu } l } \@@_cover_spread_box:nn { 4\ccwd } { ç ”ç©¶ç”Ÿ }:& \@@_cover_spread_box:nn { 4\ccwd } { \@author }\\[2ex] \@@_cover_spread_box:nn { 4\ccwd } { 指导教师 }:& \@@_cover_spread_box:nn { 4\ccwd } { \l_@@_set_cnsupervisor_tl } \hskip 1.5em \l_@@_set_cnrole_tl \end{tabular} \par \vspace{60\p@} \@@_font_semilarge: \textsf { \int_use:N \c_sys_year_int } \kaishu å¹´ \textsf { \int_use:N \c_sys_month_int } \kaishu 月 \end{center} } \cs_new_protected_nopar:Nn \@@_maketitle_pg_auxiii: { \begin{center} \vspace*{16\p@} { \bfseries \@@_font_semilarge: Dissertation ~ Submitted ~ to ~ Hangzhou ~ Dianzi ~ University\\[.8ex] for ~ the ~ Degree ~ of ~ Master } \vspace*{120\p@} \par \begin{spacing}{1.12} \huge \bfseries \l_@@_set_entitle_tl \end{spacing} \vspace*{112\p@} \par \begin{tabular}{*2{>{\bfseries\large}l}} \@@_cover_spread_box:nn { 5em } {Candidate:~} & \l_@@_set_enauthor_tl\\[3ex] \@@_cover_spread_box:nn { 5em } {Supervisor:~} & \l_@@_set_enrole_tl{} ~ \l_@@_set_ensupervisor_tl \\[11ex] \end{tabular} \vspace*{8\p@}\par \bfseries \large \clist_item:Nn \g_@@_month_clist { \int_use:N \c_sys_month_int },~ \int_use:N \c_sys_year_int \end{center} } % \end{macrocode} % \end{macro} % \begin{macro}{\commitment} % 生æˆæ‰¿è¯ºä¹¦ % \begin{macrocode} \NewDocumentCommand \commitment { O{} } { \cfoot {} \newgeometry{margin = 2.75cm} \titlepage \@@_commitment_pg_aux:n {#1} \endtitlepage \restoregeometry \cfoot {\small \thepage} } % \end{macrocode} % \end{macro} % \begin{macro}{\@@_commitment_pg_aux:n} % \cs{commitment} 的辅助命令. % \begin{macrocode} \cs_new_protected_nopar:Npn \@@_commitment_pg_aux:n #1 { \vspace*{-12\p@} \begin{center} \large æ州电å科技大å¦\\[1ex] å¦ä½è®ºæ–‡åŽŸåˆ›æ€§å£°æ˜Žå’Œä½¿ç”¨æŽˆæƒè¯´æ˜Ž \end{center} \vspace*{20\p@} \begin{center} \@@_font_semilarge: 原创性声明 \end{center} \par \vspace*{.4\baselineskip} \begin{spacing}{1.65} 本人郑é‡å£°æ˜Žï¼šæ‰€å‘ˆäº¤çš„å¦ä½è®ºæ–‡ï¼Œæ˜¯æœ¬äººåœ¨å¯¼å¸ˆçš„指导下, ç‹¬ç«‹è¿›è¡Œç ”ç©¶å·¥ä½œæ‰€å–å¾—çš„æˆæžœã€‚除文ä¸å·²ç»æ³¨æ˜Žå¼•ç”¨çš„内容外, 本论文ä¸å«ä»»ä½•å…¶ä»–个人或集体已ç»å‘表或撰写过的作å“或æˆæžœã€‚ å¯¹æœ¬æ–‡çš„ç ”ç©¶åšå‡ºé‡è¦è´¡çŒ®çš„个人和集体,å‡å·²åœ¨æ–‡ä¸ä»¥æ˜Žç¡®æ–¹å¼æ ‡æ˜Žã€‚\par \noindent 申请å¦ä½è®ºæ–‡ä¸Žèµ„料若有ä¸å®žä¹‹å¤„,本人承担一切相关责任。 \par \vspace*{1.25\baselineskip} \noindent \makebox [ .45\linewidth ] [ l ] { 论文作者ç¾å: \@@_sign_process_aux:nnn {#1} { 1 } { 0 } \tl_if_empty:NF \l_@@_sign_figure_tl { \@@_commitment_sign:N \l_@@_sign_figure_tl \tl_clear:N \l_@@_sign_figure_tl } } 日期: \makebox [ 2.5em ] [ l ] { \@@_sign_process_aux:nnn {#1} { 1 } { 1 } } å¹´ \makebox [ 2em ] { \@@_sign_process_aux:nnn {#1} { 1 } { 2 } } 月 \makebox [ 2em ] { \@@_sign_process_aux:nnn {#1} { 1 } { 3 } } æ—¥ \par\vspace*{20\p@} \begin{center} \@@_font_semilarge: å¦ä½è®ºæ–‡ä½¿ç”¨æŽˆæƒè¯´æ˜Ž \end{center} \par \vspace*{.4\baselineskip} 本人完全了解æ州电å科技大å¦å…³äºŽä¿ç•™å’Œä½¿ç”¨å¦ä½è®ºæ–‡çš„规定, å³ï¼šç ”ç©¶ç”Ÿåœ¨æ ¡æ”»è¯»å¦ä½æœŸé—´è®ºæ–‡å·¥ä½œçš„知识产æƒå•ä½å±žæ州电å科技大å¦ã€‚ 本人ä¿è¯æ¯•ä¸šç¦»æ ¡åŽï¼Œ å‘表论文或使用论文工作æˆæžœæ—¶ç½²åå•ä½ä»ç„¶ä¸ºæ州电å科技大å¦ã€‚ å¦æ ¡æœ‰æƒä¿ç•™é€äº¤è®ºæ–‡çš„å¤å°ä»¶ï¼Œå…许查阅和借阅论文; å¦æ ¡å¯ä»¥å…¬å¸ƒè®ºæ–‡çš„全部或部分内容, å¯ä»¥å…许采用影å°ã€ç¼©å°æˆ–其它å¤åˆ¶æ‰‹æ®µä¿å˜è®ºæ–‡ã€‚ (ä¿å¯†è®ºæ–‡åœ¨è§£å¯†åŽéµå®ˆæ¤è§„定) \par \vspace*{1.25\baselineskip} \noindent \makebox [.45\linewidth] [ l ] { 论文作者ç¾å: \@@_sign_process_aux:nnn {#1} { 2 } { 0 } \tl_if_empty:NF \l_@@_sign_figure_tl { \@@_commitment_sign:N \l_@@_sign_figure_tl \tl_clear:N \l_@@_sign_figure_tl } } 日期: \makebox [ 2.5em ] [ l ] { \@@_sign_process_aux:nnn {#1} { 2 } { 1 } } å¹´ \makebox [ 2em ] { \@@_sign_process_aux:nnn {#1} { 2 } { 2 } } 月 \makebox [ 2em ] { \@@_sign_process_aux:nnn {#1} { 2 } { 3 } } æ—¥ \par \vspace*{\baselineskip} \noindent \makebox [ .45\linewidth ] [ l ] { 指导教师ç¾å: \@@_sign_process_aux:nnn {#1} { 3 } { 0 } \tl_if_empty:NF \l_@@_sign_figure_tl { \@@_commitment_sign:N \l_@@_sign_figure_tl \tl_clear:N \l_@@_sign_figure_tl } } 日期: \makebox [ 2.5em ] [ l ] { \@@_sign_process_aux:nnn {#1} { 3 } { 1 } } å¹´ \makebox [ 2em ] { \@@_sign_process_aux:nnn {#1} { 3 } { 2 } } 月 \makebox [ 2em ] { \@@_sign_process_aux:nnn {#1} { 3 } { 3 } } æ—¥ \end{spacing} } % \end{macrocode} % \end{macro} % \DescribeEnv{abstract} % é‡æ–°å®šä¹‰æ‘˜è¦çŽ¯å¢ƒï¼ŒåŠ å…¥ä¸è‹±æ–‡åˆ¤æ–. % \begin{macrocode} \RenewDocumentEnvironment {abstract} { O{en} } { \str_if_eq:nnT {#1} {en} { \tl_set:Nn \l_@@_keywords_name_tl {Keywords:~} \tl_set:Nn \l_@@_keywords_sep_tl {,~} \@beginparpenalty \@lowpenalty \chapter*{\normalfont\bfseries Abstract} \addcontentsline{toc}{chapter}{\bfseries Abstract} } \str_if_eq:nnT {#1} {cn} { \tl_set:Nn \l_@@_keywords_name_tl {\textsf{关键è¯ï¼š}} \tl_set:Nn \l_@@_keywords_sep_tl {,} \@beginparpenalty \@lowpenalty \chapter*{摘è¦} \addcontentsline{toc}{chapter}{摘è¦} } } { \tl_clear:N \l_@@_abstract_title_tl \clearpage } % \end{macrocode} % \begin{variable}{\l_@@_keywords_clist} % å˜å‚¨å…³é”®è¯åˆ—表. % \begin{macrocode} \clist_new:N \l_@@_keywords_clist % \end{macrocode} % \end{variable} % \begin{macro}{\keywords} % é‡æ–°å®šä¹‰ \cs{keywords} 命令,关键è¯æ ·å¼ä¼šæ ¹æ® \env{abstract} 所选è¯è¨€è‡ªåŠ¨å˜åŒ–. % \begin{macrocode} \NewDocumentCommand \keywords { m } { \par \vspace*{\baselineskip} \noindent\textbf{\l_@@_keywords_name_tl} \clist_set:Nn \l_@@_keywords_clist {#1} \clist_use:Nn \l_@@_keywords_clist { \l_@@_keywords_sep_tl } } % \end{macrocode} % \end{macro} % è®¾ç½®ç›®å½•æ ·å¼. % \begin{macrocode} \RequirePackage{tocloft} \renewcommand \contentsname {\hfill 目录 \hfill} \renewcommand* \cfttoctitlefont{\sffamily\@@_font_semiLarge:} \dim_set:Nn \cftbeforetoctitleskip {12pt} \dim_set:Nn \cftaftertoctitleskip {24pt} \dim_set:Nn \cftbeforechapskip {1pt} \dim_set:Nn \cftbeforesecskip {-.2pt} \patchcmd { \@dottedtocline } { \leaders \hbox { $\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ } } { \kern 4pt \leaders \hbox { $\m@th\mkern .4 mu\hbox{.}\mkern .4 mu$ } } {}{} \renewcommand* \l@chapter {\@dottedtocline{1}{0em}{1.6em}} \renewcommand* \l@section {\@dottedtocline{1}{2.3em}{2.1em}} \renewcommand* \@dotsep {1.7} \renewcommand* \@pnumwidth {2.5ex} \renewcommand* \cftchapfont {\normalfont} \setcounter{tocdepth}{1} % \end{macrocode} % 使用 \cs{ctexset} æ供的接å£è®¾ç½®ç« èŠ‚æ ·å¼. % \begin{macrocode} \ctexset { chapter = { aftername = \hspace{.5\ccwd}, fixskip = true, beforeskip = 32pt, afterskip = 32pt, format+ = \sffamily \@@_font_semiLarge:, pagestyle = fancy }, section = { aftername = \hspace{.5\ccwd}, fixskip = true, beforeskip = 2ex, afterskip = 2.75ex, format = \sffamily \large }, subsection = { aftername = \hspace{.5\ccwd}, fixskip = true, beforeskip = 2ex, afterskip = 2.75ex, format = \sffamily \@@_font_semilarge: } } % \end{macrocode} % % \begin{macrocode} \makeatother \ExplSyntaxOff % \end{macrocode} % % \begin{macrocode} %</pg.config> % \end{macrocode} % % \subsection{Beamer 主题的实现} % % \begin{macrocode} %<*beamer> % \end{macrocode} % % \begin{macrocode} \ProvidesExplPackage{beamerthemehdu}{\hduthesis@date}{\hduthesis@version} {hduThesiS ~ \text_titlecase:n {beamer} ~ Module} % \end{macrocode} % % \begin{macrocode} \mode<presentation> % \end{macrocode} % % \begin{macrocode} \RequirePackage{tikz} \usetikzlibrary{fadings} % \end{macrocode} % æ’图相对路径设置. % \begin{macrocode} \graphicspath { {./figure/} {./image/} {./graphic/} {./picture/} {./figures/} {./images/} {./graphics/} {./pictures/} } % \end{macrocode} % æ¨¡å¼ \module{beamer} 下 \cs{hduset} 接å£é”®å€¼çš„定义. % \begin{variable} % { % \l_@@_set_title_tl, \l_@@_set_subtitle_tl, % \l_@@_set_author_tl, \l_@@_set_date_tl, % \l_@@_set_supervisor_tl, \l_@@_set_reference_tl, % } % \begin{macrocode} \keys_define:nn { beamer / hduset } { title .tl_set:N = \l_@@_set_title_tl, subtitle .tl_set:N = \l_@@_set_subtitle_tl, author .tl_set:N = \l_@@_set_author_tl, date .tl_set:N = \l_@@_set_date_tl, supervisor .tl_set:N = \l_@@_set_supervisor_tl, bibsource .tl_set:N = \l_@@_set_bibsource_tl, } % \end{macrocode} % \end{variable} % \begin{macro}{\hduset} % æ¨¡å¼ \module{beamer} 下设置文档信æ¯. % \begin{macrocode} \NewDocumentCommand \hduset { m } { \keys_set:nn { beamer / hduset } { #1 } \title { \large \l_@@_set_title_tl } \tl_set:Nn \insertshorttitle { \textsc \l_@@_set_subtitle_tl } \author [ \l_@@_set_author_tl ] { \l_@@_set_author_tl \tl_if_empty:NF \l_@@_set_supervisor_tl { \texorpdfstring { \\[2ex] \small Supervised ~ by ~ \l_@@_set_supervisor_tl } {} } } \date { \l_@@_set_date_tl } \tl_if_empty:NTF \l_@@_set_bibsource_tl { \newcommand* \printbibliography { \begin{frame}[t] \frametitle{Bibliography} \end{frame} } \newcounter {citecount} \renewcommand*\cite[1] { \refstepcounter{citecount} \textsuperscript{[\thecitecount]} } } { \RequirePackage [ natbib = true, sorting = none, backend = biber, autocite = superscript, style = numeric-comp ] { biblatex } \addbibresource { \l_@@_set_reference_tl } \let \@printbibliography \printbibliography \renewcommand* \printbibliography { \begin{frame}[t, allowframebreaks]{Bibliography} \small \@printbibliography \end{frame} } } } % \end{macrocode} % \end{macro} % |Beamer| 背景 \& æ ‡å¤´è®¾ç½®. % \begin{macrocode} \usebackgroundtemplate { \tikz [ remember~picture, overlay ] \node [ inner~sep = 0pt, outer~sep = auto, opacity = .1, xshift = -2em ] at (current~page.east) { \includegraphics [ height = .75\paperheight ] { hdu-logo.pdf } }; } \titlegraphic { \tikz [ remember~picture, overlay ] \node [ below~right, yshift = -1em ] at (current~page.north~west) { \includegraphics [ width = 2\textwidth/7 ]{ hdu-badge.pdf } }; } % \end{macrocode} % |Beamer| 原生主题调用. % \begin{macrocode} \useoutertheme{infolines} \useinnertheme[shadow = false]{rounded} \definecolor{hdu}{HTML}{163479} \definecolor{hduRed}{HTML}{BF6236} \usecolortheme[named = hdu]{structure} \setbeamercolor*{palette~primary} { use = structure, fg = black, bg = structure.fg!30!white } \setbeamercolor*{palette~secondary} { use = structure, fg = white, bg = structure.fg!60!white } \setbeamercolor*{palette~tertiary} { use = structure, fg = white, bg = structure.fg!90!white } \setbeamercolor{block~title} { use = structure, fg = structure.fg, bg = structure.fg!20!bg } \setbeamercolor{block~body} { use = block~title, parent = normal~text, bg = block~title.bg!50!bg } \addtobeamertemplate{block~begin} {\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}} \setbeamercolor{block~title~alerted} { use = alerted~text, fg = alerted~text.fg, bg = alerted~text.fg!20!bg } \setbeamercolor{block~body~alerted} { use = block~title~alerted, parent = normal~text, bg = block~title~alerted.bg!50!bg } \addtobeamertemplate{block~alerted~begin} {\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}} \setbeamercolor{block~title~example} { use = example~text,fg = example~text.fg, bg = example~text.fg!20!bg } \setbeamercolor{block~body~example} { use = block~title~example, parent=normal~text, bg = block~title~example.bg!50!bg } \addtobeamertemplate{block~example~begin} {\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}} \setbeamercolor{title}{parent=author~in~head/foot} \setbeamertemplate{title~page}[default][colsep=-4bp,rounded=true] \usesubitemizeitemtemplate {\tiny\raise1.5pt\hbox{\color{beamerstructure}$\blacktriangleright$}} \usesubsubitemizeitemtemplate { \tiny\raise1.5pt\hbox{\color{beamerstructure}$\bigstar$} } % \end{macrocode} % |Beamer| 顶部进度æ¡é…ç½®. % \begin{macrocode} \addtobeamertemplate{headline}{} { \tikz [ remember~picture, overlay ] { \filldraw [hduRed, ultra~thick, line~cap = butt] (0,0) --++ (\insertpagenumber\paperwidth/\insertdocumentendpage,0); \draw [white, very~thick, yshift = -.6pt] (0,0) --++ (\paperwidth,0); } } % \end{macrocode} % |Beamer| ç« èŠ‚å°é¢è®¾ç½®. % \begin{macrocode} \AtBeginSection[] { \begin{frame} \tikz [ remember~picture, overlay ] \node [ below~right, yshift = -1em ] at (current~page.north~west) { \includegraphics [ width = 2\textwidth/7 ]{ hdu-badge.pdf } }; \vfill \usebeamerfont{title} \insertsectionhead \par \tikz { \draw [line~cap = round, hdu!20, ultra~thick] (0,0) --++ (2\linewidth/3,0); \filldraw [ line~cap = round, hdu!60, ultra~thick, path~fading = west ] (0,0) --++ (\insertpagenumber\linewidth/\insertdocumentendpage * 2/3,0); } \vfill \end{frame} } % \end{macrocode} % å…¬å¼æŽ’版必è¦å®åŒ…åŠ è½½. % \begin{macrocode} % math settings \numberwithin{equation}{section} \RequirePackage { keytheorems, amssymb, mathtools, physics2, fixdif, derivative, cancel, siunitx, nicematrix } \renewcommand* \qedsymbol {$\color{gray}\blacksquare$} \usephysicsmodule{ ab, braket, op.legacy } % \end{macrocode} % 浮动体设置. % \begin{macrocode} % Figure settings \RequirePackage [ labelsep = period, figurename = \textsc{Fig}, font = footnotesize ] {caption} \RequirePackage {subcaption, booktabs, anyfontsize, ragged2e} \captionsetup{belowskip=0pt} \captionsetup[sub]{font = scriptsize} \justifying \AtBeginEnvironment{columns}{\vspace*{-.5ex}} % \end{macrocode} % % \begin{macrocode} \mode<all> % \end{macrocode} % % \begin{macrocode} %</beamer> % \end{macrocode} % % \subsection{\module{stationery} 模å—的实现} % % \begin{macrocode} %<*stationery> % \end{macrocode} % % \begin{macrocode} \@@_provide_module:n {stationery} % \end{macrocode} % % \begin{macro} % { % \g_@@_set_watermark_bool, % \l_@@_set_title_tl, \l_@@_set_author_tl, % \l_@@_set_mail_tl, \l_@@_set_date_tl % } % æ¨¡å¼ \module{stationery} 下 \cs{hduset} 接å£é”®å€¼çš„定义. % \begin{macrocode} \keys_define:nn { stationery / hduset } { watermark .bool_set:N = \g_@@_set_watermark_bool, watermark .initial:n = false, watermark .default:n = true, title .tl_set:N = \l_@@_set_title_tl, author .tl_set:N = \l_@@_set_author_tl, mail .tl_set:N = \l_@@_set_mail_tl, date .tl_set:N = \l_@@_set_date_tl } % \end{macrocode} % \end{macro} % \begin{macrocode} \RequirePackage{ hyperref, geometry, tikz, tikzpagenodes, twemojis, fancyhdr } \hypersetup{hidelinks} \urlstyle{same} % \end{macrocode} % \begin{macro}{\hduset} % æ¨¡å¼ \module{beamer} 下设置文档信æ¯. % \begin{macrocode} \NewDocumentCommand \hduset { m } { \tl_clear:N \l_@@_set_author_tl \tl_clear:N \l_@@_set_mail_tl \keys_set:nn { stationery / hduset } {#1} \hypersetup { pdftitle = Hangzhou Dianzi University, pdfsubject = \l_@@_set_title_tl, pdfauthor = \l_@@_set_author_tl } } % \end{macrocode} % \end{macro} % 设置页é¢å¸ƒå±€ã€é¡µçœ‰é¡µè„šæ ¼å¼. % \begin{macrocode} \geometry { hmargin = .8in, top = 1.95in, bottom = .75in, headheight = 1.2in, headsep = .3in, footskip = .3in } \linespread{1.25} \RequirePackage [ skip = \baselineskip ] { parskip } \renewcommand* \familydefault { \sfdefault } \definecolor{hdu}{HTML}{163479} \renewcommand* \headrulewidth {2pt} \renewcommand* \footrulewidth {2pt} \hook_gput_code:nnn { cmd/headrule/before } { . } { \color{hdu!80} } \hook_gput_code:nnn { cmd/footrule/before } { . } { \color{hdu!80} } \lhead { {}~ \minipage{.6\linewidth} \medskip \leavevmode \lower -.111in \hbox { \includegraphics [ height = .75in ] {hdu-badge} } \endminipage \medskip \hfill \minipage{.36\linewidth} \medskip \vbox { \linespread{1.2} \raggedright \small \color{hdu} \texttwemoji{1f4cd} ~ 1158 ~ No.2 ~ St., ~ Hangzhou, ~ 310018\\ \texttwemoji{1f4de} ~ (86) ~ 0571-86915072\\ \texttwemoji{1f310} ~ \url{www.hdu.edu.cn} } \medskip \endminipage } \lfoot { \small{} ~ \texttwemoji{1f4cd} ~ 1158 ~ No.2~Street, ~ Qiantang ~District, ~ Hangzhou, ~ Zhejiang ~ Province, ~ 310018, ~ P.R.China } \cfoot {} \rfoot { \small \texttwemoji{1f310} ~ \url{www.hdu.edu.cn} ~ } \pagestyle{fancy} % \end{macrocode} % \begin{macro}{\maketitle} % é‡æ–°å®šä¹‰æ ‡é¢˜å¸ƒå±€ï¼Œå½“未给定 \key*{author} å’Œ \key*{mail} 时,ä¸è¾“出 |From|. % \begin{macrocode} \renewcommand* \maketitle { \group_begin: \small \bool_lazy_or:nnT { !\tl_if_empty_p:N \l_@@_set_author_tl } { !\tl_if_empty_p:N \l_@@_set_mail_tl } { \makebox [ 4em ] [ l ] { \scshape From } } \tl_if_empty:NTF \l_@@_set_author_tl { \@latex@warning@no@line {No \noexpand \author given} } { \l_@@_set_author_tl{} ~ } \tl_if_empty:NF \l_@@_set_mail_tl { \texttt { <\l_@@_set_mail_tl> } } \bool_lazy_or:nnT { !\tl_if_empty_p:N \l_@@_set_author_tl } { !\tl_if_empty_p:N \l_@@_set_mail_tl } { \\ } \makebox [ 4em ] [ l ] { \scshape Date } \tl_if_empty:NTF \l_@@_set_date_tl \today \l_@@_set_date_tl \\ \tl_if_empty:NTF \l_@@_set_title_tl { \@latex@error {No \noexpand \title given}\@ehc } { \makebox [ 4em ] [ l ] { \scshape Subject } \l_@@_set_title_tl } \par \vspace{.5\baselineskip} \group_end: } % \end{macrocode} % \end{macro} % æ°´å°è®¾ç½®. % \begin{macrocode} \AtBeginDocument { \color_select:n {black!80} } \DeclareHookRule { shipout / background } { hduthesis / stationery } { before } { pgfrcs } \AddToHook { shipout / background } [ hduthesis / stationery ] { \bool_if:NT \g_@@_set_watermark_bool { \tikz [ remember~picture, overlay ] \node [ opacity = .2 ] at (current~page) { \includegraphics [ width = .4\linewidth ] {hdu-logo} }; } } % \end{macrocode} % \begin{macro}{\notelines} % ç”¨äºŽæ·»åŠ ç¬”è®°çº¿. % \begin{macrocode} \NewDocumentCommand \notelines {O{20}} { \tikz [ remember~picture, overlay ] { \int_step_inline:nn { #1 - 1 } { \draw [ hdu, very~thick, opacity = .6 ] ([ yshift = -##1 * (\textheight + .6in - 15.87pt ) / #1 + .3in ]current~page~text~area.north~west ) --++ (\linewidth, 0); } } } % \end{macrocode} % \end{macro} % % \begin{macrocode} %</stationery> % \end{macrocode} % % \subsection{\module{exam} 模å—的实现} % % \begin{macrocode} %<*exam> % \end{macrocode} % % \begin{macrocode} \@@_provide_module:n {exam} \keys_define:nn { hduthesis / exam } { watermark .tl_set:N = \l_@@_exam_watermark_tl, } \NewDocumentCommand \hdutexset {m} { \keys_set:nn { hduthesis / exam } {#1} } \DeclareHookRule { shipout / background } { hduthesis / exam } { before } { pgfrcs } \AddToHook { shipout / background } [ hduthesis / exam ] { \tl_if_empty:NF \l_@@_exam_watermark_tl { \tikz [ remember~picture, overlay ] \node [ opacity = .2 ] at (current~page) { \includegraphics [ width = \linewidth ] { \l_@@_exam_watermark_tl } }; } } \RequirePackage { geometry, mathtools, array, bm, esint, keytheorems, siunitx, fixdif, derivative, physics2, tasks, anyfontsize } \RequirePackage[inline]{enumitem} \RequirePackage{fontawesome5, fancyqr, circuitikz} \hook_gput_code:nnn { cmd/faIcon/before } { . } { \group_begin: \fontsize { \fp_eval:n { .9 * \f@size } } { 0 } \selectfont } \hook_gput_code:nnn { cmd/faIcon/after } { . } { \group_end: } \geometry{margin = 1in} \RequirePackage[svgnames]{xcolor} \newkeytheorem{note} [ style = remark, numbered = false, name = \color{DarkRed}\sffamily \faIcon{info-circle}~Tip. ] \newkeytheorem{problem} [ style = definition, name = \color{DarkGreen}\sffamily \faIcon{pen-square}~Problem ] \newkeytheorem{solution} [ style = definition, numbered = false, name = \color{MidnightBlue}\sffamily \faIcon{check-square}~Solution ] \usephysicsmodule{ab, op.legacy} \settasks { label = \sffamily\Alph*., item-indent = 2.5em, label-offset = .5pt } \newcommand \true {\addtocounter{task}{1}\faIcon{check-circle}} \def \@result#1 {\underline{~#1~}} \def \s@result {\textsf{ã€\qquad 】}} \DeclareRobustCommand \result {\@ifstar\s@result\@result} \keys_define:nn { textfig } { ratio .tl_set:N = \l_@@_textfig_ratio_tl, ratio .initial:n = 7 \c_colon_str 2, position .tl_set:N = \l_@@_textfig_position_tl, position .initial:n = c, unknown .code:n = \tl_if_novalue:nF {#1} { \tl_set_eq:NN \l_@@_textfig_position_tl \l_keys_key_tl } } \NewDocumentEnvironment{textfig}{ O{} } { \group_begin: \keys_set:nn { textfig } {#1} \seq_set_split:Nee \l_@@_textfig_ratio_seq { \c_colon_str } { \l_@@_textfig_ratio_tl } \noindent \minipage [ \l_@@_textfig_position_tl ] { \fp_eval:n { .96*\seq_item:Nn \l_@@_textfig_ratio_seq {1}/ ( \seq_item:Nn \l_@@_textfig_ratio_seq {1} + \seq_item:Nn \l_@@_textfig_ratio_seq {2} ) }\dimexpr \linewidth } } { \endminipage \vspace{4.5pt plus 1.5pt minus 1.5pt} \par \group_end: } \NewDocumentCommand \textfigsplit {} { \endminipage \hspace{.02\linewidth} \minipage [ \l_@@_textfig_position_tl ] { \fp_eval:n { .96*\seq_item:Nn \l_@@_textfig_ratio_seq {2}/ ( \seq_item:Nn \l_@@_textfig_ratio_seq {1} + \seq_item:Nn \l_@@_textfig_ratio_seq {2} ) }\dimexpr \linewidth } } \makeatother \ExplSyntaxOff \usetikzlibrary{ fadings, patterns, arrows, decorations.markings } \tikzset { > = stealth', every picture/.append style = { line join = round, line cap = round, thick } } % \end{macrocode} % % \begin{macrocode} %</exam> % \end{macrocode} % % \subsection{\module{l3doc} 模å—的实现} % % \begin{macrocode} %<*l3doc> % \end{macrocode} % % \begin{macrocode} \@@_provide_module:n {l3doc} % \end{macrocode} % 定义常用强调命令. % \begin{macrocode} \providecommand \module \texttt \RenewDocumentCommand \pkg {m} { \href{https://ctan.org/pkg/#1}{\textsf{#1}} } \RenewDocumentCommand \cls {m} { \href{https://ctan.org/pkg/#1}{\textsf{#1}} } \NewDocumentCommand \mailto {m} { \texttt{<\href{mailto:#1}{#1}>} } \def \@key #1 { \textcolor{red}{\textbf{\texttt{#1}}} ~ \normalfont \texttt{=} ~ } \def \s@key #1{\textcolor{red}{\textbf{\texttt{#1}}}} \DeclareRobustCommand \key {\@ifstar\s@key\@key} % \end{macrocode} % 用于输入键值对. % \begin{macrocode} \def \val #1{\meta{\textup{#1}}} \def \TFF {true\textbar \textbf{false}} \def \TTF {\textbf{true}\textbar false} \newlist{keyval}{itemize}{10} \setlist[keyval]{leftmargin = 0pt, labelsep = 0pt} % \end{macrocode} % é…ç½® \pkg{hyperref},调用所需å®åŒ…. % \begin{macrocode} \RequirePackage{ hyperref } \RequirePackage [ svgnames ] { xcolor } \hypersetup { filecolor = DarkGreen, urlcolor = MidnightBlue, linkcolor = FireBrick } \ExplSyntaxOff \pdfstringdefDisableCommands { \def \file #1 { <#1> } \def \pkg #1 { <#1> } \def \cls #1 { <#1> } \def \mailto #1 { <#1> } } \RequirePackage{tikz} \usetikzlibrary{calc} \ExplSyntaxOn \RequirePackage [ pass ] { geometry } \RequirePackage { enumitem, dirtree, tabularx, tasks, pdfpages, subcaption } \graphicspath { {} } \RequirePackage[fontset = fandol]{ctex} \linespread{1.4} \dim_set:Nn \parindent {0pt} \hook_gput_code:nnn { env/function/before } { . } { \vspace*{-.6\baselineskip} } \hook_gput_code:nnn { env/syntax/after } { . } { \par\vspace*{.1\baselineskip} } % \end{macrocode} % 定义新的 \pkg{hologo} æ ‡å¿—. % \begin{macrocode} \def \HoLogo@ApTeX #1{\HOLOGO@mbox {Ap\kern -.1667em\TeX}} \def \HoLogo@hduThesiS #1 { \raisebox{-.5pt} { \HOLOGO@mbox { \tikz [ baseline = (hduthesis.base) ] { \node [ inner~sep = 0pt ] (hduthesis) {\sffamily\scshape hduThesi\scalebox{1.2}[1.2]{S}}; \draw let \p1 = (hduthesis.west), \p2 = (hduthesis.east) in (\x1,\y1) (\x2,\y2) [ line~width = {.028pt * (\x2 - \x1)} ] ([yshift = -.5ex]hduthesis.north~west) to [ bend~right = 5 ] ([yshift = .25ex]hduthesis.north~east); } } } } \def \HoLogo@hduthesis #1 { \raisebox{-.5pt} { \HOLOGO@mbox { \scshape \cls{hduThesiS} } } } % \end{macrocode} % é‡æ–°å®šä¹‰å°é¢å¸ƒå±€. % \begin{macrocode} \let \old@maketitle \maketitle \RenewDocumentCommand \maketitle {} { \newgeometry { margin = 1.2in } \titlepage \old@maketitle \begin{center} \tikz { \node [ opacity = .8 ] { \includegraphics [ width = .14\paperwidth ] { hdu-motto.pdf } }; \node [ opacity = .3 ] { \includegraphics [ width = .21\paperwidth ] { hdu-logo.pdf } }; } \end{center} \thispagestyle{empty} } \hook_gput_code:nnn { cmd/tableofcontents/before } { . } { \clearpage } \hook_gput_code:nnn { cmd/tableofcontents/after } { . } { \endtitlepage \restoregeometry } \date{ Released ~ \hduthesis@date \quad \texttt{v\hduthesis@version} \footnote{ \url{https://github.com/\hduthesis@maintainerid/hduthesis}, ~ \url{https://gitee.com/\hduthesis@maintainerid/hduthesis} } } % \end{macrocode} % % \begin{macrocode} %</l3doc> % \end{macrocode} % % \end{implementation} % \clearpage % \PrintIndex