% \iffalse meta-comment % !TeX program = XeLaTeX % !TeX encoding = UTF-8 % % Copyright (C) 2021 - 2024 % by Nanjing University Linux User Group % <git+nju-lug-email-3104-issue-@yaoge123.cn> % % 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 % % https://www.latex-project.org/lppl.txt % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Yu Xiong. % % This work consists of the files njuthesis.dtx, % and the derived files njuthesis.ins, % njuthesis.cls, % njuthesis-doc.cls, % njuthesis-graduate.def, % njuthesis-postdoctoral.def, % njuthesis-undergraduate.def, % njuthesis.pdf, % and README.md. % % ----------------------------------------------------------------------- % % The development version of the template can be found at % % https://github.com/nju-lug/NJUThesis % % for those people who are interested. % %<*internal> \begingroup \def\NameOfLaTeXe{LaTeX2e} \expandafter\endgroup\ifx\NameOfLaTeXe\fmtname\else \csname fi\endcsname %</internal> % %<*install> \input docstrip.tex \keepsilent \askforoverwritefalse \preamble Copyright (C) 2021 - 2024 by Nanjing University Linux User Group <git+nju-lug-email-3104-issue-@yaoge123.cn> This file may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c 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. To produce the documentation run the original source files ending with `.dtx' through XeTeX. \endpreamble \generate{ \usedir{tex/latex/njuthesis} \file{\jobname.cls} {\from{\jobname.dtx}{class}} \file{\jobname-undergraduate.def} {\from{\jobname.dtx}{def-u}} \file{\jobname-graduate.def} {\from{\jobname.dtx}{def-g}} \file{\jobname-postdoctoral.def} {\from{\jobname.dtx}{def-p}} \file{\jobname-doc.cls} {\from{\jobname.dtx}{doc-cls}} %<*internal> \usedir{source/latex/njuthesis} \file{\jobname.ins} {\from{\jobname.dtx}{install}} %</internal> } \obeyspaces \Msg{*************************************************************} \Msg{* *} \Msg{* To finish the installation you have to move the following *} \Msg{* files into a directory searched by TeX: *} \Msg{* *} \Msg{* The recommended directory is TDS:tex/latex/njuthesis *} \Msg{* *} \Msg{* njuthesis.cls *} \Msg{* njuthesis-doc.cls *} \Msg{* njuthesis-graduate.def *} \Msg{* njuthesis-postdoctoral.def *} \Msg{* njuthesis-undergraduate.def *} \Msg{* njuthesis.ins *} \Msg{* *} \Msg{* To produce the documentation, run the file njuthesis.dtx *} \Msg{* through XeLaTeX. *} \Msg{* *} \Msg{* Happy TeXing! *} \Msg{* *} \Msg{*************************************************************} \endbatchfile %</install> % %<*internal> \fi %</internal> % %<class>\NeedsTeXFormat{LaTeX2e} %<*!(driver|install)> %<+!driver>\GetIdInfo $Id: njuthesis.dtx 1.4.1 2024-04-22 00:30:00 %<+!driver> +0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$ %<class> {Thesis template for Nanjing University} %<class>\ProvidesExplClass{njuthesis} %<def-u> {Undergraduate definition file for njuthesis} % ^^A ��������������������������� % ^^A ��������������������������������������������������������� %<def-u>\ProvidesExplFile{njuthesis-undergraduate.def} %<def-g> {Graduate definition file for njuthesis} %<def-g>\ProvidesExplFile{njuthesis-graduate.def} %<def-p> {Postdoctoral definition file for njuthesis} %<def-p>\ProvidesExplFile{njuthesis-postdoctoral.def} %<doc-cls> {Documentation style for njuthesis} %<doc-cls>\ProvidesExplFile{njuthesis-doc.cls} %<!driver> {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} %</!(driver|install)> % %<*driver> \ProvidesFile{njuthesis.dtx} \PassOptionsToClass{codehigh}{njuthesis-doc} \documentclass{njuthesis-doc} \begin{document} \DocInput{njuthesis.dtx} \PrintChanges \PrintIndex \end{document} %</driver> % \fi % % \title{\color{njuviolet}{The \cls{njuthesis} class\\ % \textbf{������������������������������}}} % % \author{������������ Linux ��������� % \thanks{E-mail: \href{mailto:git+nju-lug-email-3104-issue-@yaoge123.cn} % {git+nju-lug-email-3104-issue-@yaoge123.cn}}} % % \date{v1.4.1 \quad 2024-04-22} % % \changes{v0.1}{2021/09/04}{���������������} % \changes{v0.2}{2021/09/07}{���������������������������������} % \changes{v0.3}{2021/09/09}{���������������������������������������} % \changes{v0.4}{2021/09/09}{������������������������������������������} % \changes{v0.5}{2021/09/10}{������������������������������������} % \changes{v0.6}{2021/09/10}{������������������} % \changes{v0.6}{2021/09/10}{���������������������������} % \changes{v0.7}{2021/09/11}{���������������������������������} % \changes{v0.7}{2021/09/12}{��� \cls{njuthesis} ��������� CTAN���} % \changes{v0.8}{2021/09/12}{������������������������������������������} % \changes{v0.9}{2021/09/15}{������ DocStrip ���������������������} % \changes{v0.9}{2021/09/15}{��������������������������������� \LaTeX3 ���������} % \changes{v0.9}{2021/09/15}{������������������������} % \changes{v0.10}{2021/09/24}{���������������������������������������} % \changes{v0.12}{2021/11/28}{��������������� \pkg{njuvisual} ���������} % \changes{v0.12}{2021/11/29}{������������������������������������} % \changes{v0.12}{2021/11/30}{������������������������������������} % \changes{v0.12}{2021/12/06}{���������������������������������������������} % \changes{v0.13}{2021/12/12}{������������������������} % \changes{v0.13}{2021/12/15}{������2022���������������������������������������������������} % \changes{v0.13}{2021/12/16}{��������������� \pkg{listings} ���������} % \changes{v0.14}{2022/01/13}{��������������������������� \TeX{} ���������} % \changes{v0.16}{2022/03/01}{������������������������������������������} % \changes{v0.19}{2022/05/23}{���������������������������������������������������} % \changes{v0.19}{2022/05/23}{���������������������������������������������������} % \changes{v0.20}{2022/06/08}{������������������������������������} % \changes{v1.0}{2022/06/29}{���������������������������} % \changes{v1.0}{2022/07/05}{���������������������������} % \changes{v1.0}{2022/07/23}{������������������������������������} % \changes{v1.0}{2022/07/28}{������������������������������������������������} % \changes{v1.0}{2022/08/02}{������ \LaTeX ������������������������} % \changes{v1.1}{2023/01/05}{������2023���������������������������������������������������} % \changes{v1.1}{2023/01/05}{������������������ \LaTeX ������������������} % \changes{v1.4}{2024/03/11}{���������������������������������} % \changes{v1.4}{2024/03/18}{������������������ |l| ���������} % % \maketitle % % \let\abstractname\relax % \begin{abstract} % \cls{njuthesis} ��������������������������������������������������������������������������������������������� % \LaTeX ��������������������������������������������������������������������������������������������������������������� % ������������������������������������������������������������������������������������������������������ % ������������������ \LaTeX3 ��������������������������������������������������������������������������������������� % \end{abstract} % % \begin{abstract} % The \cls{njuthesis} class is intended for typesetting Nanjing University % dissertations with \LaTeX, providing support for bachelor, master, % doctoral theses as well as postdoctoral reports. % \end{abstract} % % \vspace{2cm} % \def\abstractname{������������} % \begin{abstract} % ������������������������������������������������������������ % \begin{enumerate} % \item ��������������� LPPL 1.3c ��������������������������������������������������������� PDF ��������� % \item ��������������������������������������������������������� % ��������������������������������������������������������������� % \item ������������������������������������������������������������������������������������ % \end{enumerate} % % ��������� \href{https://git.nju.edu.cn/nju-lug/lug-introduction} % {Linux ���������}��������������������������� % \end{abstract} % % \clearpage % % % \setcounter{tocdepth}{4} % \tableofcontents % % \clearpage % % % \begin{documentation} % % \section{������������} % % \cls{njuthesis}��������������������������������������������������������������� Linux % ������������������������������������������������������������������������ \LaTeX ��������� % % ��������������������������������������������������������� % ���������������������������2024���������������������������������������������������\cite{nju-bachelor-2024}��� % ���������������������������������������������������������������\cite{nju-graduate-2023}��� % ������������������������������������������������������������\cite{nju-postdoc-2022}��� % ������������������������������������������������������ % % % \subsection{������������} % \label{subsec:first-things-first} % % ��������������������� \cls{njuthesis} ��������������������������������������� \LaTeX ������������������������ % ��������������������������������������������������������������������� % % \bigskip % \fcolorbox{tpblue}{gray!5}{\parbox{\textwidth-5em}{% % \hspace{2em}\begin{minipage}[c]{10cm} % \begin{enumerate} % \item ������ \url{https://tex.nju.edu.cn} % \item ������\tpbutton{������������������������������������} % \item ���������������\tpbutton{LaTeX ������}���������\tpbutton{������������������������} % \item ��������������������������������� % \end{enumerate} % \end{minipage}}} % % \bigskip % ������������������������������������������������������������������������������ % ������������������������������������������ \file{njuthesis-sample.tex} ������������������������ % % \subparagraph{������������������������������������} % ���������������������������������������������������������\emph{������������������������������������ % ���������������}���������������������\emph{���������������������������}��������������������������� % ��������������������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������������������������������� % ��������������� \cls{njuthesis} ������������������������������ % % \subparagraph{������������������������������������} % ������������������������������������\emph{������������������}������������������������������������ % \emph{���������������������������������������������}��������������������������������������������� % ������\href{https://itsc.nju.edu.cn}{���������������������������������}������������ % ������������\href{mailto:my@yaoge123.cn}{������������}���������\emph{������}������ % ��������������������������������������������������������������� |XeLaTeX|��� % ���������\emph{������������������}��������������������������������������������������������������� % ������������������\emph{������ Word ���������������������}��������������������������� % \TeX{} ������������������������������������������������ % % \subparagraph{��������������� \LaTeX ���������������} % ���������������������������������������\emph{���������������������������}������ % ��������������������������������������������������������������������������������������� % % % \subsection{������������} % % ��������������������������������������������������������������������� GitHub ��������������������������� % \begin{enumerate} % \item ������������\href{http://yangwenbo.com/}{@solrex}������ % njuthesis���2010 - 2018��� \cite{wenboyang2013} % \item \href{https://github.com/fireblue}{@fireblue} ������������������������ % NJUThesis���2013���\cite{fireblue2013} % \item \href{https://github.com/wenhai-zheng}{@wenhai-zheng} ��� % NJUThesis���2013���\cite{wenhai-zheng2013} % \item ������������\href{https://github.com/ZLCao}{@ZLCao}������ % NJUBachelor���2013 - 2016���\cite{zenglecao2013} % \item ������������\href{http://haixing-hu.github.io/}{@Haixing-Hu}������ % NJU-Thesis���2013 - 2018���\cite{haixinghu2013} % \item ������������\href{https://github.com/zhangchuheng123}{@zhangchuheng123}��� % ������������������������ NJUThesis���2016���\cite{chuhengzhang2016} % \item ������������\href{http://ics.nju.edu.cn/~jyy/}{@jiangyy}������ % njuthesis���2017 - 2019���\cite{yanyanjiang2017} % \item \href{https://github.com/njuHan}{@njuHan} ������������������������ % NJU-Thesis���2018 - 2021��� % \item ������������\href{https://anyirao.com/}{@AnyiRao}��������������������������� % NJU Thesis 2018���2018���\cite{anyirao2018} % \item ������������\href{https://fengchendian.github.io/about.html} % {@FengChendian}��������������������������� % NJU Thesis 2021���2021���\cite{yichenzhao2021} % \end{enumerate} % ������������������������������������������������������������������������������������������������������������������������������������ % % ��������������������������������������������������������������������������������������������������������������������� % ��������� Linux User Group ������������������2021��������������������������������������������������������� % ��������� \cls{fduthesis}\cite{fduthesis}���\textsc{THuThesis}\cite{thuthesis} ��� % ��������������������������������������������������������� \LaTeX3 ��������������������������������� % ��������������������������������� % % ��������������������������������������������� % \begin{itemize} % ^^A \item ��������� % \item ������ % ^^A \item ������ % \end{itemize} % % % \subsection{������������} % % \LaTeX ��������������������������������������������������������������������������������������������� % ������\emph{������������������������������������}������������������������������������������������������������������ % ��������������������������������������������������� \LaTeX ��������������������������������������� % ������������������������������������������������������ \LaTeX3 ������������������������������������ % ��������������������������������������������������������������������������������������������������������������������� % ������������������������������\emph{������������������������}��������������������������������������������������� % ������������������ % % ��������������������������������������������������������������������������������������������������������������������� % ��������������������� % \begin{description} % \item[\textit{lshort}] ��������������������������������������������������� % ������������������������\cite{lshort-zh-cn}��� % \item[���\LaTeX ���������] ������������\cite{���������2013latex������}��� % \end{description} % % % \subsection{���������������������} % % ��������������� \textsc{DocStrip} ���������������������������������\emph{������������}������������������ % ���������������������������������������������������������������������������\file{njuthesis.dtx} ������ % \cls{njuthesis} ��������������������������������������������������������������������������������������������� % ������������������������������������������������������������������ \TeX{} ��������������������������� % ������������������������������������������������������������������������ % % ��������������������������������������������������������������������������������������������� % \pkg{pkg-example} ������������������������������ \file{file-example.xxx} ��������������������� % ��������� \opt{opt-example} ������������������������������ \env{env-example} ��������� % |\begin{}|���|\end{}|������������������������������������������������������������������������������������ % ������������ {\color{njumagenta}$\blacksquare$} ��������������������������������������������� % {\color{njublue}$\blacksquare$} ��������� \LaTeX ������������ % % % \subsection{������������} % % \file{njuthesis.dtx} ������������������������������������������������������ % \cls{njuthesis} ��������������������������������������������������� % % \subparagraph{������������} % ��������������������������� �� 2021 - 2023 ������������ Linux ������������ % % \subparagraph{���������������} % ������������������������������������������ LaTeX Project Public License��������� 1.3c ������������ % ��������������������������������������������� \url{http://www.latex-project.org/lppl.txt}��� % 1.3c ��������������������������� 2003/12/01 ��������������������� \LaTeX ������������ % % \subparagraph{������������} % ������������������������������������������������������������������������������������������������������ % ��������� \href{https://github.com/nju-lug/NJUThesis/issues}{GitHub Issue} % ������ QQ ������\footnote{��������� 991559926���}������ NJU LUG��� % % % \section{������} % \label{sec:setup} % ������������������������������������������������������������������ % % \subsection{������������} % % \cls{njuthesis} ��������������������������������������������������������������������������������������� % % \subparagraph{CTAN} % \href{https://ctan.org/}{CTAN}\footnote{The Comprehensive \TeX{} % Archive Network} ��������� \TeX{} ������������������������ % ������������ CTAN ������ % \footnote{\href{https://ctan.org/pkg/njuthesis}{\cls{njuthesis}} ���������2021���9 % ���12������������ CTAN������������������������������ % \href{https://ctan.org/pkg/njuvisual}{\pkg{njuvisual}} ���������������11���28������ % ������������������ \TeX{} Live ��� \MiKTeX ���������}��������������������������������������������� % ������������������������������������������������������������������������������������������������������������������ % \ref{subsubsec:standard-installation} ������������������������ % % \subparagraph{GitHub ������} % ������������������������������������������ % \href{https://github.com/nju-lug/NJUThesis}{Github������}��������������������������������� % ��������������������������������������������������������������������������������������������������� % \ref{subsubsec:on-the-fly-installation}��������������������������������������������������������� % ������ \href{https://git.nju.edu.cn/nju-lug/nju-latex-templates/njuthesis} % {NJU Git ������������}��������������������������� % % \subparagraph{GitHub Releases} % ��������������������������������������������������������������������������������������������������������������������� % ��������� \href{https://github.com/nju-lug/NJUThesis/releases/latest}{Github % Releases ������}���������������������������������������������������������������\ignorespaces % \href{https://mirror.nju.edu.cn/github-release/nju-lug/NJUThesis/LatestRelease/} % {���������������������������������}��������������������������������������������������� % \begin{description} % \item[\file{njuthesis-v*.pdf}] ������������������������������������ % \item[\file{njuthesis-user-v*.zip}] ������������������������������������ % ������������������������������������������������������������������������ % ������������������������������������������ % \item[\file{njuthesis-ctan-v*.zip}] ��������� CTAN ������������������ % ������������������������ % \end{description} % % % \subsubsection{������������} % % ������������������������������������������\emph{���������������������}������������ % \ref{tab:njuthesis-files} ��������� % % \begin{table}[ht] % \centering % \begin{talltblr}[ % caption = {\cls{njuthesis}������������}, % label = {tab:njuthesis-files}, % note{a} = {���������������������������������������������������������} % ] { row{1} = {font=\bfseries}, colspec = {ll} } % \toprule % ������ & ������ \\ % \midrule % \file{.vscode} & Visual Studio Code ������������ \\ % \file{CHANGELOG.md} & ������������ \\ % \file{latexmkrc} & \pkg{latexmk} ������������ \\ % \file{LICENSE} & ��������� \\ % \file{njuthesis.cls} & ��������������� \\ % \file{njuthesis.dtx}\TblrNote{a} & ������������������ \\ % \file{njuthesis.ins}\TblrNote{a} & ��������������������� \\ % \file{njuthesis.pdf} & ��������������������������� \\ % \file{njuthesis-doc.cls} & ������������������ \\ % \file{njuthesis-sample.bib} & ������������������������ \\ % \file{njuthesis-sample.tex} & ������������������������������������������������ \\ % \file{njuthesis-graduate.def} & ��������������������������� \\ % \file{njuthesis-postdoctoral.def} & ��������������������������� \\ % \file{njuthesis-undergraduate.def} & ��������������������������� \\ % \file{README.md} & ������������ \\ % \bottomrule % \end{talltblr} % \end{table} % % % \subsection{������������} % % \subsubsection{������������} % \label{subsubsec:standard-installation} % % ������\emph{������������}������������������������ \cls{njuthesis} ��������������� \TeX ��� % ��������������������� \TL~Manager ������ \MiKTeX~Console ��������������������������������� % ������������ \cls{njuthesis} ������������������ \pkg{njuvisual}������������ % ������������������������������������������������������������������������������������ \TL��� % ������������ \pkg{tlmgr} ������������������������������������������������ % \begin{shellexample}[morekeywords={tlmgr},emph={install}] % tlmgr install njuthesis njuvisual % \end{shellexample} % ��������������������������������������� \file{.cls} ��������� % % ���������������CTAN ��������������������������������������������������������������������������������������������� % ���������������������������������\emph{������������������}������������������������������������ % % {\color{red}|[!]|} ���������������������������\footnote{������������������������������������������ \TL % ������������}������������������������������������������������������������������ % \begin{shellexample}[morekeywords={l3build},emph={install}] % l3build install % \end{shellexample} % ��������������������������������� % % % \subsubsection{������������} % \label{subsubsec:on-the-fly-installation} % % ��������������������������������������������������������������������������������������������������������������������� % ��������������� \file{.cls} ��������������������������������������� Releases ������������ % \emph{���������������}��� % % ��������������������������������������������������������������������������������������������������������������������� % ������������������������������Windows ��������������������������� \file{install-win.bat}������������ % ������������ macOS ��� Linux��������������������������������� % \begin{shellexample}[morekeywords={bash}] % bash install-unix.sh % \end{shellexample} % ������������������������ \file{mythesis/} ������������������������������������������������������������������ % ������������������������ % % {\color{red}|[!]|} ��������������������������������������������������������������������������������������� % ������������������ \file{source} ��������������������������������������������������������������������������� % ������������������������������������������������ GitHub ������������ issue������������������������������������ % ��������������� \file{.dtx} ��������� % % % \subsection{������������} % \label{subsec:localcompile} % % ������������������������������������������������������ \TeX ��������������������� % ��������������������������������������������������������������������������� % ������������������������������������������������������������������ % % \subsubsection{������ \TeX{} ���������} % % ��������������������������� \TeX{} ��������������������������������������������������������������������� % ���������������������������������������~\ref {tab:texdistribution}������������ % ������������������������ \MiKTeX~Console���\TL~Manager ��������������������� % \pkg{tlmgr} \emph{������������������������}������������������������������������ % \begin{table}[ht] % \centering % \caption{\TeX ���������������������} % \label{tab:texdistribution} % \begin{tabular}{cccc} % \toprule % \TeX & Windows & macOS & Linux \\ % \midrule % \TL & $\bullet$ & & $\bullet$ \\ % \MacTeX & & $\bullet$ & \\ % \MiKTeX & $\bullet$ & $\bullet$ & $\bullet$ \\ % \bottomrule % \end{tabular} % \end{table} % % ��������������������������������������� % \begin{itemize} % \item ������������������\emph{������������������}\cite{install-latex-guide-zh-cn}��� % \item ������������������������\ignorespaces % \href{https://mirror.nju.edu.cn/download/TeX%20������������} % {���������������������������������}������������������������������������ % \item ������������������������������������������2022������22��� % \item ������ Windows ��� macOS ������������������������������ \MiKTeX ��������� % ^^A \item Linux ������������������������ full ������������ |texlive-full|��� % ^^A ��������������������������������������� % \item ������������������������������������������������\cls{njuthesis} ��������������������� % \footnote{������������ l3 ��������������������� |tlmgr update l3packages|���} % ��������������������������������������������� % \end{itemize} % % % \subsubsection{���������������} % \changes{v0.11}{2021/11/23}{������ TeXstudio ���������������} % % ���������������������������������������\emph{���������������}��������� \file{.tex} ������������������������ % % ������������������������������������������������������������������Windows���������\emph{���������}��� % ������������������������������������������������������������������������������������������\emph{��������� % ���������������������}���������������������\emph{��������� \LaTeX Workshop ��������� % \href{https://code.visualstudio.com/}{Visual Studio Code}}��������������������� % ��������������������������� TeXworks���TeXstudio ������������������������������ % % \cls{njuthesis} ��������������������������������������������������� % \begin{description} % \item[Visual Studio Code] ������������ \file{.vscode/} ��������������� % \LaTeX Workshop ��������������������������������������������������������������� % ��������������������������������������������� % \item[TeXstudio] ��������������� \file{conf.txsprofile}������������������������ % |alt+O+P| ���������������������������������������\footnote{������������������������ % ��������� \XeLaTeX ��������������������� \ref{subsubsec:compileseq} % ��������������������� |F8| ���������������������������}������������������������ % \pkg{latexmk}��������������������������������������������������� Perl��� % \end{description} % % % \subsubsection{������������} % \label{subsubsec:compileseq} % \TeX ������������������������������������������������������������������������������ % ������������������������������������������������������������������������������������������ % ��������������������������������������������������������� % % ������������������������������������������������������ % \begin{enumerate} % \item ������������������ % \item ������������������������ % \item ������������������������������ % \item ������������������������������������ % \end{enumerate} % ���������������������������\emph{������������������������������������ % \file{njuthesis-sample.tex}}��������������������������������������������� % ������������������������ \file{njuthesis-sample.pdf}������������ PDF % ������������������������������������������������������������������������������ % % ������������������������������������������������������������ \file{.tex} ������������ % ��������������������������������������������� \cls{njuthesis} ��������� \XeTeX % ��� \LuaTeX ��������������� \biber ������������������������������������������������������ % ������������������������������������������������������������������������������������������ % ������������������������������������������������������������ |latexmk -xelatex|��� % % % \subparagraph{������ \XeLaTeX} % ��������� \XeTeX ��������������������������� % % \begin{shellexample}[morekeywords={xelatex,biber}] % xelatex njuthesis-sample % biber njuthesis-sample % xelatex njuthesis-sample % xelatex njuthesis-sample % \end{shellexample} % % % \subparagraph{������ \LuaLaTeX} % ��������� \LuaTeX ��������������������������� % % \begin{shellexample}[morekeywords={lualatex,biber}] % lualatex njuthesis-sample % biber njuthesis-sample % lualatex njuthesis-sample % lualatex njuthesis-sample % \end{shellexample} % % % \subparagraph{������ \pkg{latexmk}} % \pkg{latexmk}\cite{latexmk} ��������������� Perl ������������������������������ % ��������������������������������������������������������������� % ��������������������������������������������������������� % \begin{description} % \item[Perl] ��������������� macOS ��� Linux������ Windows ������������������������ % \href{https://strawberryperl.com/}{Strawberry Perl}��� % \item[\normalfont\pkg{latexmk}] ��������������������� |latexmk| ��������������������������������������������� % \end{description} % % ��������������������������� % \begin{shellexample}[morekeywords={latexmk}] % latexmk njuthesis-sample % \end{shellexample} % ��������������������� \pdfLaTeX ��������������������� % ��������������������������������������� |-xelatex| ��� |-lualatex| ��������� % ��������������� \XeLaTeX ������������ % \begin{shellexample}[morekeywords={latexmk},emph={-xelatex}] % latexmk -xelatex njuthesis-sample % \end{shellexample} % % ��������������������������������������������������������������������������� % \begin{shellexample}[morekeywords={latexmk},emph={-c}] % latexmk -c % \end{shellexample} % % % \subsection{������������} % \label{subsec:onlinecompile} % % ��������������������������������������������������������������������������������������������������� \TeX ��������� % ������������������������\footnote{������������ Windows ������ \MiKTeX���}��������������������� % \footnote{������������������������ |scheme-infraonly| ������������ \TL��������������� \pkg{tlmgr} % ������������������������������������������������ Git ��������� \file{.github/workflows/build.yml} % ���������}������������������������������������������������������������������������������\footnote{������������ IO % ������������������������������������ Linux ������������������ Windows ������������������������}��� % ��������������������������������������������������������������������������������� % % {\color{red}|[!]|} ������������������������������������������������������������ % % \subsubsection{������ \TeX ������������} % \changes{v0.2}{2021/09/07}{��������������� \TeX ������������} % % ���������\href{https://tex.nju.edu.cn}{������ \TeX} ������ % \href{https://www.texpage.com}{TeXPage} ������������������ % ��� \href{https://sci.nju.edu.cn/}{eScience ������}������������������������������ % ������ \LaTeX ������������������������������������������������������������������������ % % % \subsubsection{������������} % % ������������������������ \ref{subsec:first-things-first} ��������������������������� % \cls{njuthesis} ������������������������ % ��������������������������������������������������������������������������������������������� % % \begin{enumerate} % \item ������\href{https://tex.nju.edu.cn}{������ \TeX ������} % \item ������~\ref{subsubsec:on-the-fly-installation}~��������������������������� % \item ���������������������������\tpbutton{������}������������������������ |XeLaTeX| ������ |LuaLaTeX| % \item ������ \file{njuthesis-sample.tex} ������������ % \item ���������������\tpbutton{������}��������������������������� % \end{enumerate} % % % \subsection{������������} % % ��������������������������������������������������������������������������������������������������� % ������������������������������������������������������������������������ Git ������������ % \file{CHANGELOG.md}��������������������������������������������������������������� \file{.tex} % ������������\footnote{��������������������������������������������������������������������� % ������������������������������������������������������ \file{njuthesis-sample.tex}}��� % ������������������������������������������������������������������������������������ \file{.cls} % ��������������������������������� % % \subparagraph{���} % ������ \file{njuthesis-user-v*.zip}������������������������ \file{.cls}���\file{.def} % ������������������������ % % \subparagraph{������} % ������������������������ \TeX��������������������������������������������������������� CTAN % ��������������������������������������������������������������������������������� % \begin{shellexample}[morekeywords={tlmgr},emph={update}] % tlmgr update --all % \end{shellexample} % % % \section{������������} % % \subsection{������������} % % ��������� \cls{njuthesis} ������������������������������������ % % \begin{latexexample}[moretexcs={\njusetup,\tableofcontents, % \maketitle,\mainmatter,\chapter,\printbibliography},emph={[1]document}] % \documentclass{njuthesis} % \njusetup{} % \begin{document} % \maketitle % \tableofcontents % \mainmatter % \chapter{������} % ������ \LaTeX{}��� % \printbibliography % \end{document} % \end{latexexample} % % ���������������������������������������������������������������������5������ PDF ��������� % ��������������������������������������������������������������������������������������� % ��������������������������������������������������������� % % % \subsection{������������} % % ������������������ \tn{documentclass} ��������������������������������������������������� % ��������������������������������������������������������������������������������������������������������� % % \subsubsection{������������} % \begin{function}[added=2021-09-07,updated=2022-07-23]{type} % \begin{syntax} % \OPT{type} = <(bachelor)|master|doctor|postdoc> % \end{syntax} % ��������������������������������������������������������������������������������������� % ������������������������������������������������������������������������������������������ % \end{function} % % \begin{function}[added=2021-09-07,updated=2022-07-01]{degree} % \begin{syntax} % \OPT{degree} = <(academic)|professional> % \end{syntax} % ��������������������������������������������������������������������������������������������� % \end{function} % % % \subsubsection{������������} % % \begin{function}[added=2021-09-07,updated=2022-07-05]{nl-cover} % \begin{syntax} % \OPT{nl-cover} = <\TFF> % \end{syntax} % ��������������������������������������������������� % \end{function} % % ���������������������������������������\emph{������}��������������� % ��������������������������������������������������������������������������������������������� % % \begin{function}[updated=2022-01-06]{decl-page} % \begin{syntax} % \OPT{decl-page} = <\TFF> % \end{syntax} % ������������������������������������������������������ % \end{function} % % ��������������������������������������������������������������������������������������������������������� % ������������������������������\footnote{��������������������������� \pkg{unicode-math}���}��� % ��������������������������������������������������������� % % ������������������������������������������������������������������������������ \pkg{pdfpages} ������ % \cite{pdfpages}��������������������������������������������� \tn{includepdf} ��������� % ��������������������������������������������������������������������������������������������������������� % \begin{latexexample}[moretexcs={\includepdf},emph={[2]pages}] % \includepdf[pages={1,{}}]{scanned.pdf} % % \setcounter{page}{1} % ��������������������������� % \end{latexexample} % % % \subsubsection{������������} % % \begin{function}[added=2022-01-14]{oneside,twoside} % \begin{syntax} % <\OPT{oneside}|(\OPT{twoside})> % \end{syntax} % ������������������������������������������������������ % \end{function} % % ������������������ \LaTeXe \cls{book} ������������������ % ������������������������������������������������������������������������������������������������ % ��������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������������������������� % ������������������������������������������������������������������������������ % % \begin{function}[added=2021-12-15,updated=2024-03-19]{draft} % \begin{syntax} % <\OPT{draft}> % \end{syntax} % ������������������������������������������ % \end{function} % % ������������������ \LaTeXe \cls{book} ������������������ % ������������������������������������������������������������������������������ % \begin{itemize} % \item ������������������������������������������������ % \item ��������������������������������������������������� % \item ������������������������������������������������������ % \item ������������������������������������������������������������������ % \item ������������������������������ PDF ������ % \end{itemize} % ��������������������������������������������������������������������������������������������������� % % ������������������������������������������������������������������������������ \pkg{listings} % ������������������������������������������������������������������������������������������������ % ��������������������������������������������� \opt{final} ��������������������������� % % \begin{function}[added=2022-04-19,updated=2024-04-19]{anonymous} % \begin{syntax} % <\OPT{anonymous}> % \end{syntax} % ��������������������������� % \end{function} % % ������������������������������������������������������������������������ % \begin{itemize} % \item ������������������������ $\times\times\times$ ������ % \item ��������������������������������� % \item ������������������ % \item ������������������������ % \item ������������������������������������ % \end{itemize} % % ��������������������������������������������������� \ref{subsec:njusetup}~������������������������������������ % % \begin{function}[added=2024-04-19]{anonymous-mode/no-nju} % \begin{syntax} % \OPT{no-nju} = <\TFF> % \end{syntax} % ��������������������������������������������������������������������������������������������� % \end{function} % % % \subsubsection{������������} % \label{subsubsec:optional-pkg} % % \begin{function}[added=2022-08-03]{ % biblatex, % cleveref, % ntheorem, % enumitem, % footmisc, % unicode-math} % \begin{syntax} % \OPT{biblatex} = <\TTF> % \OPT{cleveref} = <\TTF> % \OPT{ntheorem} = <\TTF> % \OPT{enumitem} = <\TTF> % \OPT{footmisc} = <\TTF> % \OPT{unicode-math} = <\TTF> % \end{syntax} % ������������������������������������������������������������������������������������ % \end{function} % % \begin{function}[added=2022-08-03]{minimal} % \begin{syntax} % <\OPT{minimal}> % \end{syntax} % ��������������������������������������������� % \end{function} % % ��������������������������������������������������������������������������� % \begin{description} % \item[\normalfont\pkg{biblatex}] ������������������������������������ % \item[\normalfont\pkg{cleveref}] ������������������������������������������ % \item[\normalfont\pkg{ntheorem}] ������������������������ % \item[\normalfont\pkg{enumitem}] ��������������������������� % \item[\normalfont\pkg{footmisc}] ��������������������� % \item[\normalfont\pkg{unicode-math}] ������ Unicode ��������������� % \end{description} % % ������������������������������������������������������������������������������������������������������ % ��������������������������������������������������������� % % \subsubsection{������������} % % \begin{function}[added=2022-02-23]{config} % \begin{syntax} % \OPT{config} = \Arg{������} % \end{syntax} % ��������������������� % \end{function} % % ��������������������������������������������������������������������� \LaTeX3 ��������� % % % \subsubsection{������������} % % ��������������������������������������������������������������������������������� % ������������������������������������������������������������������������������ % ������������������������������������������������������������������������������������������ % % \begin{function}[added=2023-12-15]{fontset} % \begin{syntax} % \OPT{fontset} = <win|macoffice|mac|fandol|none> % \end{syntax} % ������������������������ % \end{function} % % \opt{fontset} ������������������������ \pkg{ctex}������������������������������������������������������ % % \begin{function}[added=2021-09-07,updated=2021-12-18]{cjk-font,latin-font} % \begin{syntax} % \OPT{cjk-font} = <win|mac|fandol|founder|noto|source|none> % \OPT{latin-font} = <win|mac|gyre|none> % \end{syntax} % ������������������������������ % \end{function} % % ���������������������������������������������������������������������������{\songti ������}��� % {\heiti ������}���{\kaishu ������}���{\fangsong ������}��������� % ���������������������������������\textup{serif}���������������������\textsf{sans-serif}��� % ������������������\texttt{monospace}������������ % ������������������������������������������������������������������������������������������������������ % \file{.ttf} ��������������������������������������������������������������������� % ������������������������������������������������������������������������������������������ % ������������������������������������������������������������������������������������ % % ��������������������������������������������������� \opt{none}������������ \pkg{fontspec} % ��������� \pkg{ctex} ������������������������������������ % % \begin{function}[added=2022-07-02]{font-path} % \begin{syntax} % font-path = \Arg{���������} % \end{syntax} % ��������������������� % \end{function} % % ��������������������������������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������������������� % \opt{win} ��� \opt{macoffice} ������������������������ % ��������������������������������������������������� \file{STZHONGS.TTF}��� % % \paragraph{������} % % ������������������������������������������ \ref{tab:cjk-fontset} ��������� % ��������������������������������������������������������������������������������������������������� % ��������������������������������� MS Office ��� macOS ��������������� Office ������������ % Windows ��� macOS ��������������������� % \href{https://www.ctan.org/pkg/fandol}{Fandol} ������������ % ���������������������������������\href{https://www.foundertype.com} % {������}���\href{https://github.com/adobe-fonts}{������}��������������������������� % % \begin{table}[!htbp] % \def\FD{http://www.foundertype.com/index.php/FontInfo/index/id/1} % \def\MN{https://mirrors.nju.edu.cn/adobe-fonts/source-han-} % \def\OT{/OTF/SimplifiedChinese/} % \def\FZ#1#2{\href{\FD #1}{������ #2}} % \def\SC#1#2{\href{\MN #1\OT}{������ #2 ���}} % \centering % \begin{talltblr}[ % caption = {������������������}, % label = {tab:cjk-fontset}, % note{a} = {��������������������������� GBK ���������������}, % note{b} = {������\href{\FD164}{���������������}���������������������������}, % note{c} = {������\href{\FD131}{������������}������������������������������}, % note{d} = {������������������������������������������ Google Noto ��������� % ������������������������������������������������������������������ Adobe Source Han ������ % ������������������������������ Simplified Chinese������������������ SC������������}, % note{e} = {��������������������������������������������� Adobe % ������������������������������������������������������������������} ] % { cell{2}{2-5} = {white!70!njuyellow}, % cell{3}{2-5} = {white!70!njuyellow}, % cell{5-8}{4} = {white!70!njuyellow}, % colspec = {ccccc} } % \toprule % ������������ & ������ & ������ & ������ & ������ \\ % \midrule % \opt{win} & ������������ & ������������ & ������������ & ������������ \\ % \opt{macoffice} & ������������ & ������������ & ������������ & ������������ \\ % \opt{mac} & ������������ & ������������ & ������������ & ������������ \\ % \opt{fandol} & Fandol ������ & Fandol ������ & Fandol ������ & Fandol ������ \\ % \opt{founder}\TA & \FZ{51}{������}\TB & \FZ{61}{���������}\TC & \FZ{37}{������} & \FZ{28}{������} \\ % \opt{noto} \TD & ������������ & ������������ & ������������\TE & ������������\TE \\ % \opt{source} \TD & \SC{serif}{���} & \SC{sans}{���} & ������������\TE & ������������\TE \\ % \bottomrule % \end{talltblr} % \end{table} % % ��������������������������������������������������������������������������������������������������� % ������������������ \ref{tab:cjk-fontset} ������������������������������������������������ % ��������������������������������������������������������������������������������������������������� % ������������������������������������������������������������������������������ Word ������������ % ������������������������������������������������ Windows ��������������������������������������� % ��������������������������������������������� Windows ������������������ % % \paragraph{������} % % ������������������������������������������ \ref{tab:latin-fontset} ��������� % ��������������������������������������������������������������������������������������� % ���������������Windows ��� macOS ��������������������� \opt{gyre} ��������� % % \begin{table}[!htbp] % \def\TG#1{TG~#1~\TA} % \centering % \begin{talltblr} [ % caption = {������������������}, % label = {tab:latin-fontset}, % note{a} = {TG ������ \href{http://www.gust.org.pl/projects/e-foundry/tex-gyre}{\TeX~Gyre}���} ] % { colspec = {cccc} } % \toprule % ������������ & ��������� & ������������ & ������������ \\ % \midrule % \opt{win} & Times~New~Roman & Arial & Courier~New \\ % \opt{macoffice} & Times~New~Roman & Arial & Menlo \\ % \opt{mac} & Times~New~Roman & Arial & Menlo \\ % \opt{gyre} & \TG{Termes} & \TG{Heros} & \TG{Cursor} \\ % \bottomrule % \end{talltblr} % \end{table} % % macOS ������������������������������������������������ Times New Roman ��������� smcp % ��������������������� \tn{textsc} ������������������������������������������������������������ % ������������������������������������������������������������������������macOS ������ Times ������ % ������������ smcp ��������� % ������������������������������������ Windows ��������� Times New Roman % \footnote{Times New Roman������ TimesNewRomanPSMT������ Windows ��� macOS % ���������������������������������������������������Windows 10 ������������������������ 7.00��� % ��� macOS Monterey ������������������������ 5.01.3x���������������������������������}��� % ������������ \TeX{} Live ��������� \TeX{} Gyre Termes ������ % \footnote{\TeX{} Gyre Termes ������������ Times New Roman ������������������������ % ���������������������������}��������������������������� smcp ��������� % ��������������������� Times New Roman ��������� smcp ������������������������������������ % \TeX{} Gyre Termes ��������������������� % % \paragraph{������} % % \begin{function}[added=2022-07-02]{math-font} % \begin{syntax} % \OPT{math-font} = <asana|cambria|fira|garamond|lm|...|termes|(xits)|none> % \end{syntax} % ��������������������������������������� {tab:math-fontset}��� % \end{function} % % ��������������������� \pkg{unicode-math} ��������������������������������������������� % ��������� \LaTeX{} ������������������������ \opt{lm}���MS Word ��������������������� \opt{cambria}��� % % \begin{table}[!htbp] % \def\NCM{New Computer Modern} % \centering % \begin{talltblr} [ % caption = {������������������}, % label = {tab:math-fontset}, % note{a} = {TG ������ \href{http://www.gust.org.pl/projects/e-foundry/tex-gyre}{\TeX~Gyre}���}, % note{b} = {������������ XITS Math Bold���} ] % { colspec = {ccl} } % \toprule % ������������ & ������������ & ������ \\ % \midrule % \opt{asana} & Asana Math & \\ % \opt{cambria} & Cambria Math & ������ Office ��������������������� \\ % \opt{fira} & Fira Math & ������������������������Fira ������ \\ % \opt{garamond} & Garamond Math & Garamond ������ \\ % \opt{lm} & Latin Modern Math & Computer Modern ������ \\ % \opt{libertinus} & Libertinus Math & \\ % \opt{newcm} & \NCM~Math & Computer Modern ������ \\ % \opt{stix} & STIX Math & Times ������ \\ % \opt{bonum} & TG Bonum Math \TA & \\ % \opt{dejavu} & TG DejaVu Math \TA & DejaVu ������ \\ % \opt{pagella} & TG Pagella Math \TA & Palatino ������ \\ % \opt{schola} & TG Schola Math \TA & \\ % \opt{termes} & TG Termes Math \TA & Times ������ \\ % \opt{xits} & XITS Math \TB & ������ STIX���Times ������ \\ % \bottomrule % \end{talltblr} % \end{table} % % \paragraph{������} % % ��������������������������������������������������������������������������������������������������������� % ���������������������������Fandol������������\emph{������������}��� % ��������������������� Times New Roman���XITS ��������� \TeX~Gyre������������\emph{������������}��� % ������������������������������������������������������������������������������������ % % % \subsection{������������} % \label{subsec:njusetup} % % \begin{function}[added=2021-09-10,updated=2022-08-01]{\njusetup} % \begin{syntax} % \tn{njusetup}\oarg{���������}\marg{���������} % \end{syntax} % \cls{njuthesis} ��������������������������������������������������������� % \end{function} % % ���������������������������������������\tn{njusetup} ������������������������������������ % ��������������������������������������������� % % ��������������������������������������������������������������������������������������� % \emph{������������������}������������������������������������ \meta{key}|=|\meta{value}��� % % \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}, % emph={[3]title,author,resource}] % \njusetup{ % info/title = {������}, % info/author = {������}, % bib/resource = {ref1.bib, ref2.bib} % } % \end{latexexample} % % ������������������������������������������������������ % % \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}, % emph={[3]title,author,resource}] % \njusetup{ % info = { % title = {������}, % author = {������} % }, % bib = { % resource = {ref1.bib, ref2.bib}, % } % } % \end{latexexample} % % ������������������������������������������������������������������������������������������������������������ % % \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}, % emph={[3]title,author,resource}] % \njusetup[info]{ % title = {������}, % author = {������} % } % \njusetup[bib]{ % resource = {ref1.bib, ref2.bib} % } % \end{latexexample} % % ������������������������������������������������������������������������ % % \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}, % emph={[3]title,author,resource}] % \njusetup[info/title]{������} % \njusetup[info/author]{������} % \njusetup[bib/resource]{ref1.bib, ref2.bib} % \end{latexexample} % % % \subsection{������������} % % |info| ������������������������������ % ��������������������������������������������������������������������������������������� % % \begin{function}[updated=2022-01-14]{info/title,info/title*} % \begin{syntax} % \OPT{title} = \Arg{������} % \OPT{title*} = \Arg{������������} % \end{syntax} % ������������������������������������������������������������������\footnote{������������������15 % ������������������������������������45������������������������������ \ref{subsubsec:modify-length} % ���������������������}��������������������������������������������������� % ������������������������������������������������������������������ |\\| ������ % \end{function} % % ������������������������������������������������������������������������������������������������ % ��������������������������������������������������������������������������� % \begin{shellexample}[deletekeywords={in}] % ! Package njuthesis Error: The title should not be left blank. % (njuthesis) Please check whether you have fill in both % (njuthesis) Chinese and English titles. % \end{shellexample} % % \begin{function}[updated=2021-10-01]{info/keywords,info/keywords*} % \begin{syntax} % \OPT{keywords} = \Arg{���������} % \OPT{keywords*} = \Arg{���������������} % \end{syntax} % ������������������������������������������������������������������������ % ��������������������������������������������������������������������������������������������������������� % \end{function} % % \begin{function}[updated=2021-10-01]{info/grade} % \begin{syntax} % \OPT{grade} = \Arg{20XX} % \end{syntax} % ���������������������������20XX������ % \end{function} % % \begin{function}[updated=2021-10-01]{info/student-id} % \begin{syntax} % \OPT{student-id} = \Arg{���������������} % \end{syntax} % ������������������������������������������9������������������ % ������������������������������������������������������������������2022������������������������ % \end{function} % % \begin{function}[updated=2021-10-01]{info/author,info/author*} % \begin{syntax} % \OPT{author} = \Arg{������������} % \OPT{author*} = \Arg{������������} % \end{syntax} % ��������� % \end{function} % % \begin{function}[updated=2021-10-01]{info/department,info/department*} % \begin{syntax} % \OPT{department} = \Arg{������} % \OPT{department*} = \Arg{������} % \end{syntax} % ��������� % \end{function} % % \begin{function}[updated=2023-12-05]{info/major,info/major*} % \begin{syntax} % \OPT{major} = \Arg{������} % \OPT{major} = \Arg{������������, ������������} % \OPT{major*} = \Arg{������} % \end{syntax} % ���������������������������������������������������������������������(������)������������ % ������������������������������������������������������������������������������������ % \end{function} % % \begin{function}[updated=2021-10-01]{info/field,info/field*} % \begin{syntax} % \OPT{field} = \Arg{������} % \OPT{field*} = \Arg{������} % \end{syntax} % ������������������������������������������������������������������������������������ % \end{function} % % \begin{function}[updated=2022-01-12]{info/supervisor,info/supervisor*} % \begin{syntax} % \OPT{supervisor} = \Arg{������������,������} % \OPT{supervisor*} = \Arg{������������������} % \end{syntax} % ��������������������������������� |,| ��������������������������������������������������������������������������� % \end{function} % % \begin{function}[updated=2021-01-12]{info/supervisor-ii,info/supervisor-ii*} % \begin{syntax} % \OPT{supervisor-ii} = \Arg{������������������,������} % \OPT{supervisor-ii*} = \Arg{������������������������} % \end{syntax} % ������������������������������������������������������ % \end{function} % % \begin{function}[updated=2022-01-14]{info/submit-date} % \begin{syntax} % \OPT{submit-date} = \Arg{yyyy-mm-dd} % \end{syntax} % ��������������������������������������������� ISO ������������\cite{gb-t-7408-2005} % ��������������������������������������������������������������������������������������������������������������� % ������������������������������������������������������������������ % \end{function} % % \begin{function}[updated=2022-01-14]{info/defend-date} % \begin{syntax} % \OPT{defend-date} = \Arg{yyyy-mm-dd} % \end{syntax} % ��������������������������������������������������������������� % \end{function} % % \begin{function}[updated=2022-05-23]{info/confer-date} % \begin{syntax} % \OPT{confer-date} = \Arg{yyyy-mm-dd} % \end{syntax} % ������������������������������������������������������������������������������ % \end{function} % % \begin{function}[updated=2022-05-23]{info/bottom-date} % \begin{syntax} % \OPT{bottom-date} = \Arg{yyyy-mm-dd} % \end{syntax} % ������������������������������������������������������������������������ % \end{function} % % \begin{function}[updated=2022-05-27]{info/chairman,info/reviewer} % \begin{syntax} % \OPT{chairman} = \Arg{������������������������} % \OPT{reviewer} = \Arg{������������������������} % \end{syntax} % ������������������������������������������������������������������������������������������������������������ % ������������������������������������������������������������������������������������ % ��������������������������������������������������� % \end{function} % % \begin{function}[updated=2021-10-01]{info/clc,info/udc} % \begin{syntax} % \OPT{clc} = \Arg{���������������������} % \OPT{udc} = \Arg{���������������������} % \end{syntax} % ���������������������������������\href{http://www.ztflh.com/}{���������������������}���\ignorespaces % \href{http://www.udcsummary.info/php/index.php?lang=chi&pr=Y}{���������������������}��� % \end{function} % % \begin{function}[updated=2021-10-01]{info/secret-level} % \begin{syntax} % \OPT{secret-level} = \Arg{������} % \end{syntax} % ������������������������������������������ % \end{function} % % \begin{function}[updated=2021-10-01]{info/supervisor-contact} % \begin{syntax} % \OPT{supervisor-contact} = \Arg{������������������} % \end{syntax} % ������������������������������������������������ % \end{function} % % \begin{function}[added=2023-04-29]{info/school-code} % \begin{syntax} % \OPT{school-code} = \Arg{10284} % \end{syntax} % ������������������������������������������������\CJKsout{���������������������������������} % \end{function} % % \begin{function}[added=2023-04-24]{info/degree,info/degree*} % \begin{syntax} % \OPT{degree} = \Arg{���������������} % \OPT{degree*} = \Arg{���������������} % \end{syntax} % ��������������������������������������������������������������������������������������� \opt{degree} % ��� \opt{type} ��������������������������������������������������������������� % \end{function} % % % \subsubsection{������������} % % ������������������������������������������������������������������������������ % % \begin{latexexample}[moretexcs={\njusetup},emph={[2]info},emph={[3]title,title*, % keywords,keywords*,grade,student-id,author,author*,department,department*, % major,major*,supervisor,supervisor*,submit-date}] % \njusetup[info]{ % title = {���������������\\���������������}, % title* = {My Awesome Work}, % keywords = {���,������,���������,���������}, % keywords* = {Dummy, Keywords, Here, {it is}}, % grade = {2018}, % student-id = {189114514}, % author = {���������}, % author* = {Zhou Yuhua}, % department = {������������������}, % department* = {School of Chemistry and Chemical Engineering}, % major = {������}, % major* = {Chemistry}, % supervisor = {���������,������}, % supervisor* = {Professor Li Chengdian}, % submit-date = {2021-09-12} % } % \end{latexexample} % % ��������������������������������������������������� % % \begin{latexexample}[moretexcs={\njusetup},emph={[2]info},emph={[3]title,title*, % keywords,keywords*,grade,student-id,author,author*,department,department*, % major,major*,field,field*,supervisor,supervisor*,submit-date,defend-date,email}] % \njusetup[info]{ % title = {���������������\\���������������\\���������������}, % title* = {My Awesome Work}, % keywords = {���,������,���������,���������}, % keywords* = {Dummy,Keywords,Here,{it is}}, % grade = {2018}, % student-id = {DZ18114514}, % author = {���������}, % author* = {Zhou Yuhua}, % department = {������������������}, % department* = {School of Chemistry and Chemical Engineering}, % major = {������}, % major* = {Chemistry}, % field = {������������}, % field* = {Physical Chemistry}, % supervisor = {���������,������}, % supervisor* = {Professor Li Chengdian}, % submit-date = {2021-09-12}, % defend-date = {2022-01-15}, % clc = {0175.2}, % udc = {004.72}, % secret-level = {������}, % chairman = {���~������}, % reviewer = {���~������,���~���������,���~���������������}, % email = {git+nju-lug-email-3104-issue-@yaoge123.cn} % } % \end{latexexample} % % ��������������������������������������������������������������� % % \begin{latexexample}[moretexcs={\njusetup},emph={[2]info},emph={[3]confer-date, % bottom-date,chairman,reviewer,clc,secret-level,udc,supervisor-contact}] % \njusetup[info]{ % confer-date = {2022-05-20}, % bottom-date = {2022-05-21}, % supervisor-contact = {������������������ ������������ 163 ��� 210046} % } % \end{latexexample} % % ������������������������������������������������������ % % \begin{latexexample}[moretexcs={\njusetup},emph={[2]info},emph={[3]title,title*, % keywords,keywords*,student-id,author,department,major,supervisor,submit-date}] % \njusetup[info]{ % title = {���������������\\���������������}, % title* = {My Awesome Work}, % keywords = {���,������,���������,���������}, % keywords* = {Dummy, Keywords, Here, {it is}}, % student-id = {189114514}, % author = {���������}, % department = {������������������}, % major = {������}, % supervisor = {���������,������}, % submit-date = {2021-09-12} % } % \end{latexexample} % % % \subsection{������������} % % ��������������������������������������� \env{document} ������������ % % \begin{function}{\mainmatter} % \tn{mainmatter} ��������������������������������������������������������������������������� % ������������������������������ % \end{function} % % \begin{function}{\chaptermark,\sectionmark} % \begin{syntax} % \tn{chapter}\oarg{������������������������}\marg{������������������} % \tn{sectionmark}\marg{���������������������������} % \tn{section}\oarg{������������������������}\marg{������������������} % \tn{sectionmark}\marg{���������������������} % \end{syntax} % ��������������������������������������������������������������������������� % \end{function} % % % \subsubsection{������} % % ��������������������������������������������������������� \opt{plain} ��������������������� % ������������������������������������������������������������������������ \opt{headings} ��������� % ��������������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������������������������������������������� % % ������������������������������������������������������������������������������������������������������������ % % \begin{function}{header/content,header/content*,footer/content,footer/content*} % \begin{syntax} % \OPT{content} = \{\Arg{������}\Arg{������},\Arg{������}\Arg{������},...\} % \OPT{content*} = \{\Arg{������}\Arg{������},\Arg{������}\Arg{������},...\} % \end{syntax} % ������������������������������������������������������������������������������������������ % \end{function} % % ������������������������������������������������������������������������ \tn{fancyhead} ��� % \tn{fancyfoot} ������������������������������������������������������������������������������ % ���������������\opt{L}������������\opt{C}������������\opt{R}������ % ���������������������������������������������������\opt{O}���������������������\opt{E}������ % ��������������������� \pkg{fancyhdr} ������������ % % ������������������������������������������������������������������������������������������ % ��������������������������������������������������������������������������������������� % ��������������������������������������������� % \begin{latexexample}[moretexcs={\njusetup,\sffamily,\njusetformat}, % emph={[2]header,footer},emph={[3]content}] % \njusetup[header/content]{ % { OR } { \thepage }, { OL } { \rightmark }, % { EL } { \thepage }, { ER } { \leftmark } % }, % \njusetup[footer/content]{} % \njusetformat{header}{\small\sffamily} % \end{latexexample} % % % \subsubsection{������} % % ��������������� \pkg{ctex} ������������������������������������������������������������������������ % ���������������������������������������������������������������\footnote{������������������������ % ��������� GitHub ������������}������������������������������������������������������ % % \begin{function}[added=2021-09-22]{\njuline} % \begin{syntax} % \tn{njuline}\Arg{������} % \end{syntax} % ������������������ \tn{uline} ������������������������������������������������������ % ��������������� \tn{njuline} ������������������������������ \XeLaTeX ��� % \pkg{xeCJKfntef} ������ \LuaLaTeX ��� \pkg{lua-ul} % ������������������������������������������ % \end{function} % % \subsubsection{������} % % ������������������ \pkg{enumitem} ��������������������������������������������������������������������� % ��������������� \ref{subsubsec:optional-pkg} ������������������������������������ % % \subsubsection{������} % % \begin{function}[added=2022-08-06]{image/path} % \begin{syntax} % \OPT{path} = \{\marg{������1},\marg{������2},...\} % \end{syntax} % ������������������������������ \tn{graphicspath}������������������������������������ % \end{function} % % \subsubsection{������} % % \begin{function}[added=2022-05-01,updated=2022-10-16]{footnote/style} % \begin{syntax} % \OPT{style} = <(plain)|pifont|circled|circled*> % \end{syntax} % ��������������������������������������������������������� \opt{pifont} ��������������������������� % ���������������������������������������������������������������10������������������ \opt{circled} ��� \opt{circled*} % ������������������������������������������������������������������������������������������������������������������������������ % \footnote{������������������ \pkg{circledtext} ��������� 2022 ��� 4 ���������������������������������������} % \end{function} % % \begin{function}[added=2022-10-16]{footnote/circledtext-option} % \begin{syntax} % \OPT{circledtext-option} = \meta{������������} % \end{syntax} % \opt{circled} ��� \opt{circled*} ��������������������������������� \pkg{circledtext} % ������������������������������������������������������������������������������ % \end{function} % % \begin{function}[added=2022-10-16]{footnote/hang} % \begin{syntax} % \OPT{hang} = \TTF % \end{syntax} % ��������������������������������������������������������� \qty{1.5}{em}��� % \end{function} % % ��������������������������� \pkg{footmisc}��������������������� \LaTeX ������������������ % ��������������� \ref{subsubsec:optional-pkg} ������������������������������������ % % \subsubsection{������������} % % ^^A \url{https://www.caam.rice.edu/~heinken/latex/symbols.pdf} % ^^A http://mirrors.ctan.org/macros/unicodetex/latex/unicode-math/unimath-symbols.pdf % ������������ \pkg{unicode-math} ��������������������������������������������������� % ��������� \pkg{amsfonts}���\pkg{amssymb}���\pkg{bm} % \footnote{\url{https://tex.stackexchange.com/q/528831/}} % ���\pkg{upgreek} ��������������������������������������������������������� % ��������������������������������������� \tn{symbf}��� % ��������������������� \pkg{unicode-math} ��������� % % ������������������������������������������������ \ref{subsubsec:optional-pkg} % ������������������������������������\footnote{������������������������������������������������} % % ��������������������������������������� GB/T 3102--93��������������������������� % ������������������������\cite{gb-3102-93}������������������������ ISO 31-11:1992��� % \footnote{������������������ ISO 80000-2:2019���}��� % ��������� \TeX{} ������������������������������AMS������������������������������ % % \begin{function}[added=2022-07-31]{math/style} % \begin{syntax} % \OPT{style} = <TeX|ISO|(GB)> % \end{syntax} % ��������������������� % \end{function} % % ��������������������� \opt{GB} ������������������������������ % \begin{latexexample}[moretexcs={\njusetup},emph={[2]math}, % emph={[3]integral,integral-limits,less-than-or-equal, % math-ellipsis,partial,real-part,vector,uppercase-greek}] % \njusetup[math]{ % integral = upright, % integral-limits = false, % less-than-or-equal = slanted, % math-ellipsis = centered, % partial = upright, % real-part = roman, % vector = boldfont, % uppercase-greek = italic % } % \end{latexexample} % % ������������������������������������������ % % \begin{function}[added=2022-07-31]{math/integral} % \begin{syntax} % \OPT{integral} = <upright|slanted> % \end{syntax} % ���������������/��������� % ��������������������������������������������� \opt{xits}���\opt{newcm}��� % \end{function} % % \begin{function}[added=2022-07-31]{math/integral-limits} % \begin{syntax} % \OPT{integral-limits} = <\TF> % \end{syntax} % ���������������������������������������\opt{true}������������������\opt{false}������������������ % ��������������������������������������������������������������������������������� % \end{function} % % \begin{function}[added=2022-07-31]{math/less-than-or-equal} % \begin{syntax} % \OPT{less-than-or-equal} = <slanted|horizontal> % \end{syntax} % ��������������������������������������������� % ������������ \tn{le}���\tn{ge}���\tn{leq} ��� \tn{geq} ������������ % ���$\leqslant$���$\geqslant$������������$\leq$���$\geq$������ % \end{function} % % \begin{function}[added=2022-07-31]{math/math-ellipsis} % \begin{syntax} % \OPT{math-ellipsis} = <centered|lower> % \end{syntax} % ��������� \tn{dots} ���������������������\opt{centered}������������������������������������������ % \opt{lower}��������������������������������������� % ��������������������������� \tn{lots}���\tn{cdots} ������������������ % \end{function} % % \begin{function}[added=2022-07-31]{math/partial} % \begin{syntax} % \OPT{partial} = <upright|italic> % \end{syntax} % ���������������������/��������� % \end{function} % % \begin{function}[added=2022-07-31]{math/real-part} % \begin{syntax} % \OPT{real-part} = <roman|fraktur> % \end{syntax} % ������ \tn{Re} ��������� \tn{Im} ������������ % \end{function} % % \begin{function}[added=2022-07-31]{math/vector} % \begin{syntax} % \OPT{vector} = <boldfont|arrow> % \end{syntax} % ��������������������������������������������������� % \end{function} % % \begin{function}[added=2022-07-31]{math/uppercase-greek} % \begin{syntax} % \OPT{uppercase-greek} = <upright|italic> % \end{syntax} % ������������������������/��������� % ������������������ $\increment x$ ��������������������������������� \tn{increment} ��������� % \end{function} % % ��������������������������������������������������������������������������������������������������� % \begin{itemize} % \item ��������������������������������������������� % \begin{itemize} % \item $\uppi$ ������ |$\uppi$| % \item $\symup{i}$ ������ |$\symup{i}$| % \item $\symup{e}$ ������ |$\symup{e}$| % \end{itemize} % \item ��������������������������� % \begin{itemize} % \item $\mathrm{d} \varphi / \mathrm{d} t$ % ������ |$\mathrm{d} \varphi / \mathrm{d} t$| % \end{itemize} % \end{itemize} % % \subsubsection{������������} % % ������������ \pkg{ntheorem} ��������������������������������������������������������� % ��������������������� \ref{subsubsec:optional-pkg} ������������������������������������ % \footnote{������������������������������������������������} % % ��������������������������������������������������� % % \begin{function}[added=2022-04-21]{theorem/style} % \begin{syntax} % \OPT{style} = <(plain)|break|change|margin|empty|...> % \end{syntax} % ������������������������������ \tn{theoremstyle}\marg{������������}��� % \end{function} % % \begin{function}[added=2022-04-21]{theorem/header-font} % \begin{syntax} % \OPT{header-font} = \meta{������������������} % \end{syntax} % ������������������������������������ \tn{theoremheaderfont}\marg{������}��� % \end{function} % % \begin{function}[added=2022-04-21]{theorem/body-font} % \begin{syntax} % \OPT{body-font} = \meta{������������������} % \end{syntax} % ������������������������������������ \tn{theorembodyfont}\marg{������}��� % \end{function} % % \begin{function}[added=2022-04-21]{theorem/qed-symbol} % \begin{syntax} % \OPT{qed-symbol} = \meta{������������} % \end{syntax} % ������������������������ \tn{theoremsymbol}\marg{������}���������������������������\mdlgwhtsquare������ % ������ \pkg{unicode-math} ���������������������������\rule{1ex}{1ex}������ % \end{function} % % \begin{function}[added=2022-04-21]{theorem/counter} % \begin{syntax} % \OPT{counter} = <part|(chapter)|section|...> % \end{syntax} % ������������������������ % \end{function} % % \begin{function}[added=2023-05-07]{theorem/share-counter} % \begin{syntax} % \OPT{share-counter} = <\TFF> % \end{syntax} % ������������������������ % \end{function} % % ������������������������������ % % \begin{latexexample}[moretexcs={\njusetup,\bfseries,\itshape,\mdlgwhtsquare}, % emph={[2]theorem},emph={[3]style,header-font,body-font,qed-symbol,counter}] % \njusetup[theorem]{ % style = plain, % header-font = \normalfont \bfseries , % body-font = \itshape , % qed-symbol = \ensuremath { \mdlgwhtsquare }, % counter = chapter, % share-counter = false % } % \end{latexexample} % % ������������������������������������������ % % \begin{function}[added=2022-08-05]{theorem/type} % \begin{syntax} % \OPT{type} = \{\marg{���������,������������} \marg{���������},...\} % \end{syntax} % ������������������������������������������������ \meta{������������} ������������\emph{������}������ % ���������������������\emph{������}������������������������������������������������������������������������ % ���\emph{������������������������}������������������������������������������������������������ % \end{function} % % \opt{theorem/type} ���������������������������������~\ref{tab:mathenv} ��������� % ��������������������������������������������������������������������� % % \begin{table}[htbp] % \centering % \begin{talltblr} [ % caption = {���������������������������}, % label = {tab:mathenv}, % note{a} = {������������������������������������������������������������������������} ] % { colspec = {cc|cc} } % \toprule % ������ & ������ & ������ & ������ \\ % \midrule % axiom & ������ & lemma & ������ \\ % corollary & ������ & proof \TA & ������ \\ % definition & ������ & theorem & ������ \\ % example & ��� & & \\ % \bottomrule % \end{talltblr} % \end{table} % % \begin{function}[added=2022-08-05]{theorem/define} % \begin{syntax} % <\OPT{define}> % \end{syntax} % ��������������������� % \end{function} % % \opt{theorem/define} ��������������������������������������������������� % \opt{theorem/type} ������������������������������������������������������������������ % ������������������������������ \opt{theorem/type} ��������������������� % % ��������������������������������������������������������������������������������������� % \env{proof}������������������������������������������������������������������������������������ % ������������������ \env{exercise} ��� \env{solution} ������������������������������������������ % % \begin{latexexample}[moretexcs={\njusetup,\normalfont}, % emph={[2]theorem},emph={[3]define,body-font,type}] % \njusetup[theorem]{ % share-counter = true , % define , % body-font = \normalfont , % type = { % { {exercise} {������} }, % { {solution,*} {���} } % }, % define % } % \end{latexexample} % % % \subsubsection{������} % % \begin{function}[added=2022-07-31]{label-sep/figure,label-sep/table,label-sep/equation} % \begin{syntax} % \OPT{figure} = \meta{������} % \OPT{table} = \meta{������} % \OPT{equation} = \meta{������} % \end{syntax} % ���������������������������������������������������������������������������en dash������ % \end{function} % % % \subsection{������������} % % ��������������������� \pkg{biblatex} ��������������� \hologo{biber} ��������������� % ������ \pkg{biblatex-gb7714-2015}\cite{biblatex-gb7714-2015} ������ % GB/T 7714--2015 \cite{gb-t-7714-2015} ������������������������������������������������ % ������������ |biber| ������������������������������������������������������������������ % \ref{subsubsec:compileseq} ������������������������������������������������������ % % ��������������������������������������������������������� \hologo{BibTeX}������������������������ % \ref{subsubsec:optional-pkg} ������������������������������������������������������ % ������������ \pkg{gbt7714} ��������������������������������������������� % % \subsubsection{������} % % \begin{function}[added=2021-12-19]{bib/style} % \begin{syntax} % \OPT{style} = <(numeric)|author-year|\meta{���������������}> % \end{syntax} % ������������������������������������������ \opt{numeric} ���������-������������ \opt{author-year}��� % ��������������������������� \pkg{biblatex} ������������������������������������ % \end{function} % % ��������������������������������������������������������������������������������������������� % ���������������������������������������������������������������\cite{gb-t-7714-2015}��� % ��������������������������������������������������������������������� % \begin{description} % \item[���������������] ������������������������������������������������������������������������ % ������������������������������������������������������������������������ % ��������������������������������������������������������������������������� % \item[������-������������] ���������������������������������-��������������������������������� % ���������������������������������������������������������"()"������ % ���������������������������-��������������������������������������� % ��������������������������������������������������������������� % \end{description} % % ��������������������������������������������������������������������������������������������� % ���������\cite{nju-bachelor-2023}��������������������������������������������������������������� % % \begin{function}[added=2022-02-15]{bib/option} % \begin{syntax} % \OPT{option} = \meta{������������} % \end{syntax} % ��������� \pkg{biblatex} ������������������������������ % \end{function} % % ������������ \pkg{biblatex} ��������������������������� % ���������������������������������������������������������������������������������\cite{biblatex}��� % % \begin{function}[added=2021-12-19]{bib/resource} % \begin{syntax} % \OPT{resource} = \Arg{������} % \end{syntax} % ��������������������������������� \tn{addbibresource} ��������������������������������������� % ������������������������������������������\file{.bib}������������������������ % \end{function} % % \begin{function}{\addbibresource} % \begin{syntax} % \tn{addbibresource}\Arg{������} % \end{syntax} % ��������������������������������������� \pkg{biblatex} ������������������������������������ % ��������������������������������������������������������������������������������������������������� % ������������������������������������������������������ % \end{function} % % ��������������������������������������������������� % ������ \opt{bib/option} ��������������������������������������������������������� % ��������������������������������������������������������������������������� % \begin{latexexample}[moretexcs={\njusetup},emph={[2]bib}, % emph={[3]style,resource,option}] % \njusetup[bib]{ % style = author-year, % resource = {njuthesis-sample.bib}��� % option = { % doi = false, % isbn = false, % url = false, % eprint = false, % gbnamefmt = lowercase % } % } % \end{latexexample} % % % \subsubsection{���������������} % % \begin{function}{\printbibliography} % ������������������������ % \end{function} % % ��������������������������������������������������������������������� % % ������������������������������������������������������������������������������������������ % ��������������������� \tn{printbibliography} ��������� % \begin{latexexample}[moretexcs={\njusetup},emph={[2]bib},emph={[3]option}] % \njusetup[bib/option]{refsection = chapter} % \end{latexexample} % % ������������������������������������������������������������������������������������������������ % ��������� \pkg{biblatex-gb7714-2015} ��������������������� 2022-04-16 ������������������ % ��������������� \TeX{} ��������������������������������������������������������������������������������� % ��������������������� \file{.bib} ������������������������������������������ graphene % ��������������� graph|\-|ene��� % % \subsubsection{������������} % % \begin{function}{\cite} % \begin{syntax} % \tn{cite}\marg{������} % \tn{cite}\oarg{������}\marg{������} % \end{syntax} % ��������������������������������� % \end{function} % % ������������ \tn{cite} ��������������������������������������������������������������������� % ��������������������������������������������������������������������������������� % ��������� \ref{tab:numeric-style} ������ \ref{tab:author-year-style}��� % % \begin{table}[ht] % \centering % \begin{talltblr} [ % caption = {���������������������������������}, % label = {tab:numeric-style} ] % { colspec = {cll} } % \toprule % ������������ & ������ & ������������ \\ % \midrule % ������������ & \tn{cite} & ��������������������� \\ % ������������ & \tn{parencite} & ������������������������ \\ % ������������ & \tn{cite} & ��������������������������������������� \\ % ������������ & \tn{pagescite} & ��������������������� \\ % ������������ & \tn{textcite} & ��������������������������������� \\ % ������������ & \tn{authornumcite} & ������������������������������ \\ % ������������ & \tn{footfullcite} & ������������ \\ % \bottomrule % \end{talltblr} % \end{table} % % \begin{table}[ht] % \centering % \begin{talltblr} [ % caption = {������-������������������������������}, % label = {tab:author-year-style}, % note{a} = {��������������� \tn{parencite} ��������������� \tn{cite}���} ] % { colspec = {cll} } % \toprule % ������������ & ������ & ������������ \\ % \midrule % ������������ & \tn{cite} \TA & ��������������������������������������������� \\ % ������������ & \tn{cite} & ������������ \\ % ������������ & \tn{pagescite} & ������������������������������������������ \\ % ������������ & \tn{yearcite} & ������������������������ \\ % ��������������������� & \tn{yearpagescite} & ��������������������������������������� \\ % ������������ & \tn{textcite} & ��������������������������������������� \\ % ������������ & \tn{footfullcite} & ������������ \\ % \bottomrule % \end{talltblr} % \end{table} % % % \subsubsection{������������} % % ��������������������������������������������������������������������������������������������������� % % \subparagraph{������ EndNote} % % ������������������������������������������������������ % \href{https://itsc.nju.edu.cn/EndNote/list.htm}{EndNote} % ������������������������������������������ EndNote 20��� % % \subparagraph{������ JabRef} % % \href{https://www.jabref.org/}{JabRef} ��������������������������������������������������� % JabRef ������������ \hologo{BibTeX} ��� \pkg{biblatex} ������������������ % ������������������ \file{.bib} ��������� ������������ TeXstudio ������������������������������������ % % \subparagraph{������ Zotero} % % \href{https://www.zotero.org/}{Zotero} ������������������������������������������������������ % Zotero ������������������������������������ \href{https://github.com/l0o0/jasminum}{Jasminum}��� % \href{https://github.com/retorquere/zotero-better-bibtex}{Better BibTeX}��� % \href{https://github.com/bwiernik/zotero-shortdoi}{DOI Manager} ��������������������� % ������ Zotero Connector ������������������������������ % % % \subsection{������������} % % ��������������������������������������������������������������������������������������� % % % \subsubsection{������} % % \begin{function}{\maketitle} % ��������������� % \end{function} % % ������������������������������������������������������������������������������������ % ��������������� \opt{nl-cover}���\emph{������}��������������������������������������������� % ��������������� \opt{decl-page}������������������������������������������������������������������ % ��������������������������������������������������������������������� % % \paragraph{������������} % % \begin{function}[added=2021-12-23,updated=2022-08-06]{ % image/nju-emblem,image/nju-name} % \begin{syntax} % \OPT{nju-emblem} = \Arg{������} % \OPT{nju-name} = \Arg{������} % \end{syntax} % ������������������������������������ % \end{function} % % ���������������������������������������������������������������������������\emph{������������}������������������ % ������������������������������������������������������ \pkg{njuvisual} ��������������� \tikzlogo % ���������������������������������������������������������������������1��������������������� % % % \subsubsection{���������} % \changes{v0.11}{2021/10/01}{���������������������������������} % % \DescribeEnv{abstract} % \DescribeEnv{abstract*} % ��������������������������������������������� % % \begin{latexexample}[emph={[1]abstract,abstract*}] % \begin{abstract} % ������������������ % \end{abstract} % % \begin{abstract*} % Abstract in English % \end{abstract*} % \end{latexexample} % % \begin{function}[added=2022-02-04,updated=2022-07-31]{abstract/toc-entry} % \begin{syntax} % \OPT{toc-entry} = <\TTF> % \end{syntax} % ��������������������������������������������������� % ��������������������������������������������������������������������� PDF ��������� % \end{function} % % \begin{function}[added=2023-04-23]{abstract/underline} % \begin{syntax} % \OPT{underline} = <\TTF> % \end{syntax} % ������������������������������������������������������������������������������ % \end{function} % % \begin{function}[added=2022-03-26,updated=2022-07-31]{abstract/title-style} % \begin{syntax} % \OPT{title-style} = <(strict)|centered|natural> % \end{syntax} % ������������������������������������ % ������������������������\opt{strict}��������������������������������������� % \end{function} % % ��������������� Word ������������������������������������������ % ������������������������������������������������������������ % \begin{itemize} % \item \opt{strict}������������������������������������������������������ % ������������������������������������������������������������ % ������������������������������������������������������������������������ % \item \opt{centered}��������������������������������������������� % \item \opt{natural}������������������������������������������ % ������������������������������������ % \end{itemize} % % \subsubsection{���������} % % \DescribeEnv{preface} % ������ \env{preface} ��������������� % % \begin{latexexample}[emph={[1]preface,flushright}] % \begin{preface} % ������������ % \vspace{1cm} % \begin{flushright} % ������������\\ % ������������ % \end{flushright} % \end{preface} % \end{latexexample} % % % \subsubsection{���������} % % \begin{function}{\tableofcontents,\listoffigures,\listoftables} % ��������������������������������������������������� % \end{function} % % \begin{function}[added=2022-08-08]{tableofcontents/dotline} % \begin{syntax} % \OPT{dotline} = <chapter|(section)> % \end{syntax} % ������������������������������������ \opt{chapter} ������������������������������������ % \end{function} % % \begin{function}[added=2022-02-04,updated=2022-07-31]{ % tableofcontents/toc-entry,listoffigures/toc-entry, % listoftables/toc-entry} % \begin{syntax} % \OPT{toc-entry} = <\TTF> % \end{syntax} % ��������������������������������������������������������������������������������� % ��������������������������������������������������������������������� PDF ��������� % ��������������������������������������������������������������������������������� % \end{function} % % ������������������������������������������������������������������������������ % \begin{latexexample}[moretexcs={\njusetup},emph={[3]toc-entry}, % emph={[2]tableofcontents,listoffigures,listoftables}] % \njusetup{ % tableofcontents/toc-entry = true, % ��������������������������������� % listoffigures/toc-entry = false, % listoftables/toc-entry = false % } % \end{latexexample} % % ������������������������������������������\footnote{������������������������������������������������������ % \cite{gb-t-7713.1-2006}��������������������������������������������������������������������������������� % ������������������������������������������������}��������������������������� \ref{subsubsec:edit-text} ������ % % \subsubsection{���������} % % \DescribeEnv{notation} % \DescribeEnv{notation*} % ������������������������������������������������������������������������������������������������������������ % \begin{syntax} % \tn{begin}\{notation\}\oarg{������������}\oarg{������������} % \quad\tn{item}\oarg{������} \meta{������} % \tn{end}\{notation\} % \end{syntax} % % % \subsubsection{���������} % % \DescribeEnv{acknowledgement} % ������ \env{acknowledgement} ������������������������������������������������������ % ������������������������������������������������������ % % \begin{latexexample}[emph={[1]acknowledgement}] % \begin{acknowledgement} % ������NJU LUG % \end{acknowledgement} % \end{latexexample} % % % \subsubsection{���������} % % \begin{function}{\appendix} % ��������������������������������������������������������������������������������� % \end{function} % % % \subsubsection{������������} % % \begin{function}[added=2021-09-29,updated=2021-12-20]{\njupaperlist} % \begin{syntax} % \tn{njupaperlist}\oarg{������}\marg{������} % \end{syntax} % ��������������������������������������������������������������������������������������� % ������������������������������������\Arg{������} ������������������ \tn{cite}��� % ��������������������������������������������������� % \end{function} % % ������������������������������������ % \begin{latexexample}[moretexcs={\njuchapter,\njupaperlist}] % \njuchapter{������������������������������������} % \njupaperlist[���������������������������������������������]{ % Nemec1997-209-214,Chiani1998-2998-3008,Chiani1998a} % \end{latexexample} % % ������������������������������������������������������������������������������������������������������������������������ % ������ \pkg{biblatex} ��������������������������������������������������������������������� % \footnote{\url{https://blog.csdn.net/xenonhu/article/details/120853247}}��� % ��������������������������������������������������������������������������������������������������������������� % \begin{latexexample}[emph={[1]@inproceedings},emph={[2]author}] % @inproceedings{Nemec1997-209-214, % title = {Force control of redundant robots}, % author = {B Nemec and Zhao, Mou Mou}, % author+an = {2=thesisauthor}, % booktitle = {Processings of Symposium on Robot Control}, % shortbooktitle = {(PSRC)}, % pages = {209-214}, % country = {Nantes France}, % year = {1997} % } % \end{latexexample} % ������ |author+an| ������������������������������������ \meta{������}|=|\meta{������}��� % ������������������������������������������������������������������������������\tn{njupaperlist} % ��������� |thesisauthor| ������������������������������������������������������������������ % % ��������������������������������������������������������������������������� % ������ \href{https://github.com/hushidong/biblatex-map}{bibmap} % ��������������������������������������� \file{bibmapaddauthoran.py} ��� |fieldsource| % ��������������������������������������������������� \file{.bib} ������������������������ % ��������������� \file{test.bib} ������������������������������������������������������������������ % ������������������������������������ % % \begin{shellexample}[morekeywords={python},deletekeywords={test}] % python bibmap.py test.bib -m bibmapaddauthoran.py % \end{shellexample} % % % \subsection{������������} % % ��������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������������� % % \subsubsection{������������} % \label{subsubsec:edit-text} % % \begin{function}{\njusetname,\njusetname*,\njusettext,\njusettext*} % \begin{syntax} % \tn{njusetname}\marg{������}\oarg{������}\marg{������} % \tn{njusetname*}\marg{������}\oarg{������}\marg{������} % \tn{njusettext}\marg{������}\oarg{������}\marg{������} % \tn{njusettext*}\marg{������}\oarg{������}\marg{������} % \end{syntax} % ��������������������������������������������������������������������������������� % ��������������������������������������� \ref{subsubsec:constant-name} ��� % \ref{subsubsec:constant-text} ������ % \end{function} % % ��������������������������������������������������� % \begin{latexexample}[moretexcs={\njusetname}] % \njusetname{listoffigures}{������������} % \njusetname{listoftables}{������������} % \end{latexexample} % % ������������������������������������������������������������������������������������ % % \begin{latexexample}[moretexcs={\njusetname*}] % \njusetname*{abstract}[b]{Abstract} % \end{latexexample} % % \subsubsection{���������} % \label{subsubsec:modify-length} % % \begin{function}{\njusetlength,\njusetlength*} % \begin{syntax} % \tn{njusetlength}\marg{������}\marg{������} % \tn{njusetlength*}\marg{������}\marg{������} % \end{syntax} % ������������������������������������������������|dim| ������������ % ���������������������������������������������|skip| ������������������������������ % ��������������������������� \ref{subsubsec:constant-length} ������ % \end{function} % % ������������������������������������������������������������������������ % % \begin{latexexample}[moretexcs={\njusetlength}] % \njusetlength{crulewd}{330pt} % \end{latexexample} % % \subsubsection{������} % \label{subsubsec:modify-format} % % \begin{function}{\njusetformat} % \begin{syntax} % \tn{njusetformat}\marg{������}\marg{������} % \end{syntax} % ������������������������������������������������������ \ref{subsubsec:constant-format} ������ % \end{function} % % ��������������������������������������������������������������� % % \begin{latexexample}[moretexcs={\njusetformat,\zihao}] % \njusetformat{chapter}{\zihao{-2}\sffamily\centering} % \end{latexexample} % % ������������������������������ % % \begin{latexexample}[moretexcs={\njusetformat,\zihao,\bfseries}] % \njusetformat{tabular}{\zihao{-4}\bfseries} % \end{latexexample} % % % \subsection{������������������} % % ������������������ \pkg{njuvisual} ������������������������������\cite{njuvisual}��� % ��������������������������������� % \begin{latexexample}[moretexcs={\njuemblem,\njuname,\njuname*}] % \njuemblem{!}{3cm} % ��������� 3cm ��������������� % \njuname{4cm}{!} % ��������� 4cm ��������������������� % \njuname*{4cm}{!} % ��������� 4cm ��������������������� % \njuemblem[black]{!}{3cm} % ��������������� % \njuemblem[department=dii]{!}{4cm} % ������������������ % \njuemblem[department=cs,color=blue]{!}{3cm} % ��������������������� % \end{latexexample} % % ��������������������������������������������������������� % % % \section{������������} % % ������������������������������������\emph{������}��������������������������������������� % \begin{itemize} % \item \pkg{xtemplate} ��� \pkg{l3keys2e}��������������� \LaTeX3 ��������������� % ������������ \pkg{l3packages} ��������� % \item \cls{ctexbook}��������������������������������������������� C\TeX % ������ \cite{CTeX}��� % \item \pkg{amsmath}������ \LaTeX{} ��������������������������������������������� % ������ \hologo{AmSLaTeX} ��������� % \item \pkg{geometry}������������������������������ % \item \pkg{setspace}������������������ % \item \pkg{fancyhdr}������������������������ % \item \pkg{graphicx}��������������������������������� % \item \pkg{booktabs}��������������������� % \item \pkg{caption}������������������������ % \item \pkg{hyperref}������������������������������������������������������������ % \end{itemize} % % ������������������������������������������������ % \begin{itemize} % \item \pkg{ntheorem}��������������������������������� % \item \pkg{unicode-math}��������������� Unicode ��������� OpenType ��������������� % \item \pkg{footmisc}������������������ % \item \pkg{enumitem}������������������������ % \item \pkg{cleveref}������������������������������������ % \item \pkg{biblatex} ��� \pkg{biblatex-gb7714-2015}������������������������������������������������ % \end{itemize} % % ��������������������������������������������������������������� % \begin{itemize} % \item \pkg{fandol}���\pkg{tex-gyre}���\pkg{tex-gyre-math}���\pkg{xits} ������ % ��������������������� % \item \pkg{emptypage}������������������������������������������������������������������ % \item \pkg{circledtext} ��� \pkg{l3experimental}������������ \opt{footnote/circled} % ��� \opt{footnote/circled*} ������������������������������ % \item \pkg{pifont}������������ \opt{footnote/pifont} ������������������������������ % \item \pkg{tikz} ��� \pkg{njuvisual}��������������������������������������� % \item \pkg{tabularray}��������������������������������������������������������� % \item \pkg{xeCJKfntef} ��� \pkg{lua-ul}��������������������������������������������� % \end{itemize} % % ������������������������������������������������������������������������������������������ % \begin{itemize} % \item \pkg{natbib} ��� \pkg{gbt7714} ��� \hologo{BibTeX} ������������������������������ % \item \pkg{bm} ��������������������������������������������������� % \item \pkg{babel} ��������������������������������������������������������� % \item \pkg{microtype} ��� \XeTeX ��� \LuaTeX ������������������ % \end{itemize} % % % \begin{thebibliography}{99} % % \newcommand\urlprefix{\newline\hspace*{\fill}} % \let\OldUrl=\url % \renewcommand\url[2][]{{\small\textit{#1}~\OldUrl{#2}}} % \newcommand\CTANurl[2][]{{^^A % \small\textit{#1}~\href{http://mirror.ctan.org/#2}{\texttt{CTAN://#2}}}} % % \subsection*{������} % % \bibitem{lshort} % \textsc{Oetiker T}, \textsc{Partl H}, \textsc{Hyna I}, et al. % \newblock \textit{The Not So Short Introduction to \hologo{LaTeXe}: Or \hologo{LaTeXe} in 139 minutes} [EB/OL]. % \newblock version 6.4, % \newblock (2021-03-09) % \urlprefix\url{https://ctan.org/pkg/lshort-english} % \urlprefix\CTANurl[���������]{info/lshort/english/lshort.pdf} % % \bibitem{lshort-zh-cn} % \textsc{Oetiker T}, \textsc{Partl H}, \textsc{Hyna I}, et al. % \newblock \textit{��������������������������� \hologo{LaTeXe} ������: ��� 111 ������������ \hologo{LaTeXe}} [EB/OL]. % \newblock \CTeX{} ������������, ���. % \newblock ������������ version 6.4, ������������ version 6.03, % \newblock (2021-11-21) % \urlprefix\url{https://ctan.org/pkg/lshort-zh-cn} % \urlprefix\CTANurl[���������]{info/lshort/chinese/lshort-zh-cn.pdf} % % \bibitem{install-latex-guide-zh-cn} % ������. % \newblock \textit{��������������������� \LaTeX ���������������} [EB/OL]. % \newblock version 2022.10.1, % \newblock (2022-10-01) % \urlprefix\url{https://ctan.org/pkg/install-latex-guide-zh-cn} % \urlprefix\CTANurl[���������]{info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf} % % \bibitem{���������2013latex������} % ���������. % \newblock \textit{\LaTeX ������} [M]. % \newblock ������: ���������������������, 2013 % % % \subsection*{���������������} % % \bibitem{gb-3100-93} % ���������������������������������������������. % \newblock \textit{���������������������������: GB 3100--93} [S]. % \newblock ������: ���������������������, 1993 % % \bibitem{gb-3101-93} % ���������������������������������������������. % \newblock \textit{������������������������������������������: GB 3101--93} [S]. % \newblock ������: ���������������������, 1993 % % \bibitem{gb-3102-93} % ���������������������������������������������. % \newblock \textit{���������������������������������������������: GB/T 3102--93} [S]. % \newblock ������: ���������������������, 1993 % % \bibitem{gb-t-7408-2005} % ���������������������������������������������. % \newblock \textit{������������������������\quad ������������~ ������������������������: GB/T 7408--2005} [S]. % \newblock ������: ���������������������, 2005 % % \bibitem{gb-t-7713.1-2006} % ���������������������������������������������. % \newblock \textit{������������������������: GB/T 7713.1--2006} [S]. % \newblock ������: ���������������������, 2006 % % \bibitem{gb-t-7714-2015} % ���������������������������������������������. % \newblock \textit{���������������\quad ������������������������: GB/T 7714--2015} [S]. % \newblock ������: ���������������������, 2015 % % \bibitem{nju-bachelor-2024} % ������������������������. % \newblock \textit{������������������������2024������������������������������������������������} [EB/OL]. % \newblock (2023-12-19) % \urlprefix\url{https://jw.nju.edu.cn/db/23/c26263a645923/page.htm} % % \bibitem{nju-graduate-2023} % ������������������������. % \newblock \textit{���������������������������������������������������������} [EB/OL]. % \newblock (2023-04-26) % \urlprefix\url{https://grawww.nju.edu.cn/63/a9/c905a615337/page.htm} % % \bibitem{nju-postdoc-2022} % ���������������������������. % \newblock \textit{���������������������} [EB/OL]. % \newblock (2022-07-27) % \urlprefix\url{https://hr.nju.edu.cn/6334/list.htm} % % % \subsection*{������} % % \bibitem{biblatex} % \textsc{Lehman P}, \textsc{Wright J}, \textsc{Boruvka A}, \textsc{Kime P}. % \newblock \textit{Sophisticated Bibliographies in \LaTeX} [EB/OL]. % \newblock version 3.17, % \newblock (2022-02-02) % \urlprefix\url{https://ctan.org/pkg/biblatex} % \urlprefix\CTANurl[���������]{macros/latex/contrib/biblatex/doc/biblatex.pdf} % % \bibitem{biblatex-gb7714-2015} % ���������. % \newblock \textit{������ GB/T 7714-2015 ��������� biblatex ������������������} [EB/OL]. % \newblock version 1.1j, % \newblock (2022-08-29) % \urlprefix\url{https://ctan.org/pkg/biblatex-gb7714-2015} % \urlprefix\CTANurl[���������]{biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf} % % \bibitem{CTeX} % \textsc{CTEX.ORG}. % \newblock \textit{\CTeX{} ������������} [EB/OL]. % \newblock version 2.5.8, % \newblock (2021-12-12) % \urlprefix\url{https://ctan.org/pkg/ctex} % \urlprefix\CTANurl[���������������������]{language/chinese/ctex/ctex.pdf} % % \bibitem{circledtext} % ������. % \newblock \textit{Create circled text} [EB/OL]. % \newblock version 1.1.0, % \newblock (2022-04-28) % \urlprefix\url{https://ctan.org/pkg/circledtext} % \urlprefix\CTANurl[���������]{macros/latex/contrib/circledtext/circledtext.pdf} % % \bibitem{latexmk} % \textsc{Collins J}. % \newblock \textit{Fully automated \LaTeX document generation} [EB/OL]. % \newblock version 4.76, % \newblock (2021-11-20) % \urlprefix\url{https://www.ctan.org/pkg/latexmk} % \urlprefix\CTANurl[���������]{support/latexmk/latexmk.pdf} % % \bibitem{listings} % \textsc{Heinz C}, \textsc{Moses B}, \textsc{Hoffmann J}. % \newblock \textit{Typeset source code listings using \LaTeX} [EB/OL]. % \newblock version 1.8d, % \newblock (2020-03-24) % \urlprefix\url{https://www.ctan.org/pkg/listings} % \urlprefix\CTANurl[���������]{macros/latex/contrib/listings/listings.pdf} % % \bibitem{njuvisual} % \textsc{Xiong Y}. % \newblock \textit{Display logos related to Nanjing University} [EB/OL]. % \newblock version 0.2.1, % \newblock (2022-01-09) % \urlprefix\url{https://ctan.org/pkg/njuvisual} % \urlprefix\CTANurl[���������]{macros/latex/contrib/njuvisual/njuvisual.pdf} % % \bibitem{pdfpages} % \textsc{Matthias A}. % \newblock \textit{Include PDF documents in \LaTeX} [EB/OL]. % \newblock version 0.5v, % \newblock (2022-05-22) % \urlprefix\url{https://www.ctan.org/pkg/pdfpages} % \urlprefix\CTANurl[���������]{macros/latex/contrib/pdfpages/pdfpages.pdf} % % \bibitem{siunitx} % \textsc{Wright J}. % \newblock \textit{A comprehensive (SI) units package} [EB/OL]. % \newblock version 3.1.0, % \newblock (2022-04-25) % \urlprefix\url{https://www.ctan.org/pkg/siunitx} % \urlprefix\CTANurl[���������]{macros/latex/contrib/siunitx/siunitx.pdf} % % \bibitem{tabularray} % \textsc{Jianrui Lyu}. % \newblock \textit{Typeset tabulars and arrays with \LaTeX3} [EB/OL]. % \newblock version 2021Q, % \newblock (2021-12-01) % \urlprefix\url{https://ctan.org/pkg/tabularray} % \urlprefix\CTANurl[���������]{macros/latex/contrib/tabularray/tabularray.pdf} % % % \subsection*{������} % % \bibitem{fduthesis} % ���������. % \newblock \textit{fduthesis: ������������������������} [EB/OL]. % \newblock version 0.7e, % \newblock (2020-08-30) % \urlprefix\url{https://ctan.org/pkg/fduthesis} % \urlprefix\CTANurl[���������������������]{macros/latex/contrib/fduthesis/fduthesis.pdf} % % \bibitem{thuthesis} % ������������ TUNA ������. % \newblock \textit{\textsc{ThuThesis}���������������������������������} [EB/OL]. % \newblock version 7.2.3, % \newblock (2021-05-31) % \urlprefix\url{https://ctan.org/pkg/thuthesis} % \urlprefix\CTANurl[���������������������]{macros/latex/contrib/thuthesis/thuthesis.pdf} % % % \emph{���������������������������������} % % \bibitem{wenboyang2013} % ���������. % \newblock \textit{������������������������ \LaTeX ������} [EB/OL]. % \newblock (2018-06-23) % \urlprefix\url{https://github.com/solrex/njuthesis} % % \bibitem{fireblue2013} % \textsc{fireblue}. % \newblock \textit{������������������������ \LaTeX ������} [EB/OL]. % \newblock (2013-04-13) % \urlprefix\url{https://github.com/fireblue/NJUThesis} % % \bibitem{wenhai-zheng2013} % \textsc{wenhai-zheng}. % \newblock \textit{������������������������������ \LaTeX ������} [EB/OL]. % \newblock (2013-08-12) % \urlprefix\url{https://github.com/wenhai-zheng/NJUThesis} % % \bibitem{zenglecao2013} % ���������. % \newblock \textit{������������������������������������������ \LaTeX ������} [EB/OL]. % \newblock (2019-06-26) % \urlprefix\url{https://github.com/ZLCao/NJUBachelor} % % \bibitem{haixinghu2013} % ���������. % \newblock \textit{������������������������ \XeLaTeX ������} [EB/OL]. % \newblock (2018-08-08) % \urlprefix\url{https://github.com/Haixing-Hu/nju-thesis} % % \bibitem{chuhengzhang2016} % ���������. % \newblock \textit{��������������������������������� \LaTeX ������} [EB/OL]. % \newblock (2016-06-01) % \urlprefix\url{https://github.com/zhangchuheng123/NJUThesis} % % \bibitem{yanyanjiang2017} % ���������. % \newblock \textit{������������������ \hologo{LyX} ���������������������������} [EB/OL]. % \newblock (2019-01-16) % \urlprefix\url{https://github.com/jiangyy/njuthesis} % % \bibitem{njuHan2018} % \textsc{njuHan}. % \newblock \textit{������������������������(������/������/������)��������������� \LaTeX ������} [EB/OL]. % \newblock (2021-06-15) % \urlprefix\url{https://github.com/njuHan/njuthesis-nju-thesis-template} % % \bibitem{anyirao2018} % ���������. % \newblock \textit{��������������������������������� \LaTeX ������ 2018 ������} [EB/OL]. % \newblock (2018-06-24) % \urlprefix\url{https://github.com/AnyiRao/NJUThesis2018} % % \bibitem{yichenzhao2021} % ���������. % \newblock \textit{��������������������������������� \LaTeX ���������2021������} [EB/OL]. % \newblock (2021-09-23) % \urlprefix\url{https://github.com/FengChendian/NJUThesis2021} % % % \end{thebibliography} % % % \end{documentation} % \clearpage % % \begin{implementation} % % \section{������������} % \changes{v0.10}{2021/09/26}{���������������������������������������} % % ��������������� \LaTeX3 ��������������������� \pkg{expl3} ��������� % ������������ \pkg{l3packages} ��������������������� % % ������������������������������\sgrd{class}������������ ������ \pkg{DocStrip} ������ % ���guard������������������������������������������|*|���������|/|��������������������������������������� % ���������������|*|���������|/|������ guard ��������������������������������������������������������� % ��������������������� guard ��������������������������������������������� % % ���������������������������������������\pgrd{u}��������������� % \file{njuthesis-undergraduate.def}������������������������������\pgrd{g}��� % ������������ \file{njuthesis-graduate.def}������������������������������\pgrd{p}��� % ������������ \file{njuthesis-postdoctoral.def}��� % % ������������������ \textsf{@@} ��� guard��������������������������������������� % ������������������������������������������������������������������ \textsf{@@} ��������������������������������� % ���������������������������������\grd{@@=nju}��� % % \subsection{������} % % \begin{macrocode} %<*class> %<@@=nju> % \end{macrocode} % % \changes{v0.11}{2021/10/23}{���������������������������������������������} % \changes{v0.12}{2021/12/03}{������������ \pkg{l3packages} ������������������} % ������ \LaTeX3 ��������������� % \begin{macrocode} \RequirePackage { xtemplate, l3keys2e } \msg_new:nnn { njuthesis } { l3-too-old } { Package~ "#1"~ is~ too~ old. \\ Please~ update~ an~ up-to-date~ version~ of~ the~ bundles~ "l3kernel"~ and~ "l3packages"~ using~ your~ TeX~ package~ manager~ or~ from~ CTAN. } \clist_map_inline:nn { xtemplate, l3keys2e } { \@ifpackagelater {#1} { 2020/10/01 } { } { \msg_error:nnn { njuthesis } { l3-too-old } {#1} } } % \end{macrocode} % % \changes{v1.3}{2023/11/14}{������������ \LaTeX3 ��� |e| ������������������} % ������������ L3 ��������������� \url{https://github.com/CTeX-org/ctex-kit/pull/678}��� % \begin{macrocode} \@ifpackagelater { expl3 } { 2023/10/10 } { } { \cs_generate_variant:Nn \tl_set:Nn { Ne } \cs_generate_variant:Nn \tl_gset:Nn { Ne } \cs_generate_variant:Nn \tl_const:Nn { Ne } \cs_generate_variant:Nn \tl_gput_right:Nn { Ne } } % \end{macrocode} % % ������ \cls{njuthesis} ��������� \XeTeX ��� \LuaTeX��� % \begin{macrocode} \msg_new:nnn { njuthesis } { unsupported-engine } { The~ njuthesis~ class~ requires~ either~ XeTeX~ or~ LuaTeX. \\ "#1"~ is~ not~ supported~ at~ present.~ You~ must~ change~ your~ typesetting~ engine~ to~ "xelatex"~ or~ "lualatex". } \bool_lazy_or:nnF { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: } { \msg_fatal:nne { njuthesis } { unsupported-engine } { \c_sys_engine_str } } % \end{macrocode} % % % \subsection{������������} % % ��������������������������������� \cs[no-index]{\meta{���������}_@@_\meta{���}_\meta{������}_\meta{������}} % ������������������������������ \cs[no-index,replace=false]{\meta{���������}_@@_\meta{���}_\meta{������}_\meta{������}} % ������������������������������������������������������|l| ���������������������|g| ���������������������|c| ��������� % ��������������������������������������������������������������������������������������������������������� % % \begin{variable}{ % \l_@@_tmpa_box,\l_@@_tmpb_box,\l_@@_tmpc_box,\l_@@_tmp_clist, % \l_@@_tmpa_dim,\l_@@_tmpb_dim,\l_@@_tmpa_int,\l_@@_tmpb_int, % \l_@@_tmp_skip,\l_@@_tmpa_tl,\l_@@_tmpb_tl} % ��������������� % \begin{macrocode} \box_new:N \l_@@_tmpa_box \box_new:N \l_@@_tmpb_box \box_new:N \l_@@_tmpc_box \clist_new:N \l_@@_tmp_clist \dim_new:N \l_@@_tmpa_dim \dim_new:N \l_@@_tmpb_dim \int_new:N \l_@@_tmpa_int \int_new:N \l_@@_tmpb_int \skip_new:N \l_@@_tmp_skip \tl_new:N \l_@@_tmpa_tl \tl_new:N \l_@@_tmpb_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_info_type_int} % ������������������������������������ % \begin{macrocode} \int_new:N \g_@@_info_type_int % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_opt_academic_bool} % ��������������������������������������������������� % \begin{macrocode} \bool_new:N \g_@@_opt_academic_bool % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_opt_draft_bool} % ������������������������������������ % \begin{macrocode} \bool_new:N \g_@@_opt_draft_bool \bool_gset_false:N \g_@@_opt_draft_bool % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_opt_supvii_bool} % ��������������������������������������������������� % \begin{macrocode} \bool_new:N \g_@@_opt_supvii_bool % \end{macrocode} % \end{variable} % % \begin{variable}{ % \g_@@_info_supvfull_tl, % \g_@@_info_supvfull_en_tl} % ��������������������������������������������� % \begin{macrocode} \tl_new:N \g_@@_info_supvfull_tl \tl_new:N \g_@@_info_supvfull_en_tl % \end{macrocode} % \end{variable} % % \begin{variable}{ % \g_@@_info_major_tl, % \g_@@_info_majorc_tl} % ������������������������������������ % \begin{macrocode} \tl_new:N \g_@@_info_major_tl \tl_new:N \g_@@_info_majorc_tl % \end{macrocode} % \end{variable} % % \begin{variable}{ % \g_@@_font_set_tl, % \g_@@_font_latin_tl, % \g_@@_font_cjk_tl, % \g_@@_font_math_tl} % ��������������������������������������������� % \begin{macrocode} \tl_new:N \g_@@_font_set_tl \tl_new:N \g_@@_font_latin_tl \tl_new:N \g_@@_font_cjk_tl \tl_new:N \g_@@_font_math_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_font_path_tl} % ������������������������������������ % \begin{macrocode} \tl_new:N \g_@@_font_path_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_font_path_bool} % ������������������������������������ % \begin{macrocode} \bool_new:N \g_@@_font_path_bool % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_config_tl} % ������������������������������������������ % \begin{macrocode} \tl_new:N \g_@@_config_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\c_@@_name_today_tl} % ������������������������������ |yyyy-mm-dd|��� % \begin{macrocode} \tl_const:Ne \c_@@_name_today_tl { \int_to_arabic:n { \c_sys_year_int } - \int_to_arabic:n { \c_sys_month_int } - \int_to_arabic:n { \c_sys_day_int } } % \end{macrocode} % \end{variable} % % \begin{variable}{\c_@@_name_type_clist,\c_@@_name_type_en_clist} % ������������������������������ % \begin{macrocode} \clist_const:Nn \c_@@_name_type_clist { ������, ������, ������ } \clist_const:Nn \c_@@_name_type_en_clist { Bachelor, Master, Doctor~of~Philosophy } % \end{macrocode} % \end{variable} % % \begin{variable}{\c_@@_name_month_en_clist} % ��������������������� % \begin{macrocode} \clist_const:Nn \c_@@_name_month_en_clist { January, February, March, April, May, June, July, August, September, October, November, December } % \end{macrocode} % \end{variable} % % \changes{v1.1}{2023/03/07}{���������������������������������������������} % \begin{variable}{\c_@@_name_anon_clist,\c_@@_name_anon_en_clist} % ������������������������������������������������ % \begin{macrocode} \clist_const:Nn \c_@@_name_anon_clist { author, chairman, email, student-id, reviewer, supervisor-contact, supervisor, supervisor-ii } \clist_const:Nn \c_@@_name_anon_en_clist { author, supervisor, supervisor-ii } % \end{macrocode} % \end{variable} % % % \subsection{������������} % % \begin{macro}{\@@_null:} % ��������� \LaTeXe{} ������ \tn{null}��� % \begin{macrocode} \cs_new:Nn \@@_null: { \hbox:n { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_space:,\@@_quad:,\@@_qquad:} % ��������� \LaTeXe{} ������ \tn{quad} ��� \tn{qquad}��� % \begin{macrocode} \cs_new:Nn \@@_space: { \skip_horizontal:n { .5 em } } \cs_new:Nn \@@_quad: { \skip_horizontal:n { 1 em } } % \cs_new:Nn \@@_qquad: { \skip_horizontal:n { 2 em } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_vskip:,\@@_hskip:} % ��������������������� skip��� % \begin{macrocode} \cs_new:Nn \@@_vskip: { \skip_vertical:N \l_@@_vsep_dim } \cs_new:Nn \@@_hskip: { \skip_horizontal:N \l_@@_hsep_dim } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_vskip:N} % ��������� \LaTeXe ������ \tn{vspace*} % \footnote{\url{https://tex.stackexchange.com/a/30065/251992}}��� % ������������������������������������������ |skip|��� % \begin{macrocode} \cs_set_protected:Npn \@@_vskip:N #1 { \tex_hrule:D \@height \c_zero_dim \scan_stop: \tex_penalty:D \@M \skip_vertical:N #1 \skip_vertical:N \c_zero_dim } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_define_name:nn,\@@_define_name:nnn} % ������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_define_name:nn #1 { \tl_new:c { l_@@_name_ #1 _tl } \tl_set:cn { l_@@_name_ #1 _tl } } \cs_new:Npn \@@_define_name:nnn #1#2#3 { \@@_define_name:nn { #1 } {#2} \@@_define_name:nn { #1 _en } {#3} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_define_fmt:nn} % ������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_define_fmt:nn #1 { \tl_set:cn { l_@@_fmt_ #1 _tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_define_dim:nn,\@@_define_skip:nn} % ������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_define_dim:nn #1 { \dim_new:c { l_@@_ #1 _dim } \dim_set:cn { l_@@_ #1 _dim } } \cs_new:Npn \@@_define_skip:nn #1 { \skip_new:c { l_@@_ #1 _skip } \skip_set:cn { l_@@_ #1 _skip } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_info:n,\@@_name:n,\@@_fmt:n} % ������������������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_info:n #1 { \tl_use:c { g_@@_info_ #1 _tl } } \cs_new:Npn \@@_name:n #1 { \tl_use:c { l_@@_name_ #1 _tl } } \cs_new:Npn \@@_fmt:n #1 { \tl_use:c { l_@@_fmt_ #1 _tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_name:nn} % ��������������������������������������������������������� % \begin{macrocode} \cs_new:Npn \@@_name:nn #1#2 { \group_begin: \@@_fmt:n {#1} \@@_name:n {#2} \group_end: } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fontsize:nn,\@@_fontsize:nnn} % ������������������������������������\pkg{ctex} ������������������������������ 1.2������������������������������ % \tn{baselineskip}��������� \cs{l__ctex_font_size_tl} ��������������������� % \begin{macrocode} \cs_new:Npn \@@_fontsize:nn #1#2 { \fontsize {#1} {#2} \selectfont } \cs_new:Npn \@@_fontsize:nnn #1#2#3 { \@@_fontsize:nn {#1} { \fp_to_decimal:n { #3 * #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_zihao:nn,\@@_zihao:n} % ������������������������ \cs{ctex_zihao:n}��� % \begin{arguments} % \item ������������ % \item ��������������� \tn{zihao} % \end{arguments} % \begin{macrocode} \cs_new:Npn \@@_zihao:nn #1#2 { \prop_get:NnNTF \c__ctex_font_size_prop {#2} \l__ctex_font_size_tl { \exp_after:wN \@@_fontsize:nnn \l__ctex_font_size_tl {#1} } { \msg_error:nnn { ctex } { fontsize } {#2} } } % \end{macrocode} % ��������������������� 1.3��� % \begin{macrocode} \cs_new:Npn \@@_zihao:n { \@@_zihao:nn { 1.3 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\cs_new:Npo} % \begin{macro}{\@@_set_ccglue:n} % ��������������������������������� \cls{ctexbook} ������������������ \pkg{xeCJK} ��� \pkg{luatexja} % ��������������������������������������������������������������������� |x| ������������������ % \begin{macrocode} \cs_generate_variant:Nn \cs_new:Npn { Npo } \cs_new:Npo \@@_set_ccglue:n #1 { \sys_if_engine_xetex:TF { \skip_set:Nn \l__ctex_ccglue_skip {#1} } { \ltjsetparameter { kanjiskip = {#1} } } } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@@_box_ulined:NN,\@@_box_ulined:Nc} % ��������������������������������� % \begin{arguments} % \item ���������|dim| ��������� % \item ������������������������ % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_box_ulined:NN #1#2 { \mode_leave_vertical: \rule [ \l_@@_ruledpi_dim ] {#1} { \l_@@_rulehti_dim } \skip_horizontal:n { -#1 } \hbox_to_wd:nn {#1} { \tex_hfil:D #2 \tex_hfil:D } } \cs_generate_variant:Nn \@@_box_ulined:NN { Nc } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_box_ulined_info:Nn} % ��������������������������� \cs[no-index]{g_@@_info_\meta{������}_tl} ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_box_ulined_info:Nn #1#2 { \@@_box_ulined:Nc #1 { g_@@_info_ #2 _tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_box_spread:NNNn} % \changes{v0.19}{2022/05/16}{���������������������������������������������������} % ������������������������������������������������ \cls{fduthesis}��� % ������������������������������������������������������������ \tn{hfil} ������������������ % ������������������������������������������������������������ % \begin{arguments} % \item ������ |dim| ��������� % \item ���������|dim| ��������� % \item ������ % \item ��������������������������� % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_box_spread:NNNn #1#2#3#4 { \mode_leave_vertical: \@@_get_width:Nn #1 { #3 #4 } \hbox_to_wd:nn {#2} { \dim_compare:nTF { #1 > #2 } { \tex_hfil:D \scalebox { \dim_to_decimal_in_unit:nn {#2} {#1} } [ 1.0 ] { #3 #4 } \tex_hfil:D } { #3 \tl_map_inline:nn {#4} { ##1 \tex_hfil:D } \tex_unskip:D } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_box_spread:NNn,\@@_box_spread:NNv,\@@_box_spread:NNe} % \begin{macrocode} \cs_new:Npn \@@_box_spread:NNn { \@@_box_spread:NNNn \l_@@_tmp_skip } \cs_generate_variant:Nn \@@_box_spread:NNn { NNv } \cs_generate_variant:Nn \@@_box_spread:NNn { NNe } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_box_spread_name:Nn,\@@_box_spread_name:NNn} % ��������������������������� \cs[no-index]{l_@@_name_\meta{������}_tl} ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_box_spread_name:Nn #1#2 { \@@_box_spread:NNv #1 \c_empty_tl { l_@@_name_ #2 _tl } } \cs_new_protected:Npn \@@_box_spread_name:NNn #1#2#3 { \@@_box_spread:NNv #1 #2 { l_@@_name_ #3 _tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_box_center:Nn} % ������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_box_center:Nn #1#2 { \mode_leave_vertical: \hbox_to_wd:nn {#1} { \tex_hfil:D #2 \tex_hfil:D } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_box_multiline:NNNNn} % ��������������������������������������� % \begin{arguments} % \item ��������������������������� |int| ��������� % \item ��������������������������� |tl| ��������� % \item ���������|clist| ��������� % \item ���������|dim| ��������� % \item ������������ % \end{arguments} % ������������ 4 ��������������������������������������� 4 ������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_box_multiline:NNNNn #1#2#3#4#5 { \int_set:Nn #1 { \int_max:nn { \clist_count:N #3 } {#5} } \int_step_inline:nn {#1} { % \end{macrocode} % \changes{v1.1}{2022/11/29}{���������������������������������������������������������������} % ��������������������������������������� % \begin{macrocode} \clist_gpop:NNF #3 #2 { \tl_set_eq:NN #2 \c_empty_tl } \@@_box_ulined:NN #4 #2 \tex_par:D } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_box_multiline:NNn} % \begin{macrocode} \cs_new:Npn \@@_box_multiline:NNn { \@@_box_multiline:NNNNn \l_@@_tmpa_int \l_@@_tmpa_tl } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_uline:n} % ��������������������������� % \begin{arguments} % \item ���������|dim| ��������� % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_uline:n #1 { \mode_leave_vertical: \rule [ \l_@@_ruledpi_dim ] {#1} { \l_@@_rulehti_dim } \skip_horizontal:n { -#1 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_uuline:N} % ��������������������������������� % \begin{arguments} % \item ���������|dim| ��������� % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_uuline:N #1 { \mode_leave_vertical: \rule [ \l_@@_ruledpii_dim ] {#1} { \l_@@_rulehtii_dim } \skip_horizontal:n { -#1 } \rule [ \l_@@_ruledpiii_dim ] {#1} { \l_@@_rulehtii_dim } \skip_horizontal:n { -#1 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_get_width:Nn,\@@_get_width:NV,\@@_get_width:Nv} % ^^A ������ fduthesis % ��������������������� % \begin{arguments} % \item ��������������� |dim| ��������� % \item ������ % \end{arguments} % ��������������� \tn{hbox} ��������������������������� |dim| ������������ % \begin{macrocode} \cs_new:Npn \@@_get_width:Nn #1#2 { \hbox_set:Nn \l_@@_tmpa_box {#2} \dim_set:Nn #1 { \box_wd:N \l_@@_tmpa_box } } \cs_generate_variant:Nn \@@_get_width:Nn { NV } \cs_generate_variant:Nn \@@_get_width:Nn { Nv } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_get_max_width:NN} % ^^A ������ fduthesis������������������������ % ������������������������������������������������ |dim| ������������ % ������������������������������������ |info| ��������������������� % ������������������������������������������ % \begin{arguments} % \item |dim| ��������� % \item ������ |clist| % \end{arguments} % ��� \cs{l_@@_tmp_clist} ������������������������������������������ \cs{l_@@_tmpa_tl}��� % ��������������������� |#1| ��������������������������������������������������� |#1| ������������ % ��������������������� \cs{l_@@_tmp_clist} ��������� % \begin{macrocode} \cs_new:Npn \@@_get_max_width:NN #1#2 { \clist_map_inline:Nn #2 { \@@_get_width:Nv \l_@@_tmpa_dim { g_@@_info_ ##1 _tl } \dim_gset:Nn #1 { \dim_max:nn {#1} { \l_@@_tmpa_dim } } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_get_width_print:Nn,\@@_get_width_print:Nv, % \@@_get_width_print:Ne} % ��������������������������� % \begin{arguments} % \item ���������|dim| ��������� % \item ������ % \end{arguments} % ��������� \cs{@@_get_width:Nn} ������������������������������������������ % ��������������������������� |dim| ������������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_get_width_print:Nn #1#2 { \@@_get_width:Nn #1 {#2} \dim_set:Nn #1 { \textwidth - #1 } #2 } \cs_generate_variant:Nn \@@_get_width_print:Nn { Nv } \cs_generate_variant:Nn \@@_get_width_print:Nn { Ne } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_uline_entry:Nn} % ������������������������������������������ % \begin{arguments} % \item ���������|dim| ��������� % \item ������ % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_uline_entry:Nn #1#2 { \@@_get_width_print:Nv #1 { l_@@_name_ #2 _tl } \@@_box_ulined_info:Nn #1 {#2} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_uline_bientry:Nn} % ������������������������������������������ % \begin{arguments} % \item ���������|dim| ��������� % \item ������ % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_uline_bientry:Nn #1#2 { \@@_get_width_print:Nv #1 { l_@@_name_ #2 _tl } \dim_sub:Nn #1 { \textwidth / 2 } \@@_box_ulined_info:Nn #1 {#2} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_date:www,\@@_date_en:www} % ��������� |yyyy-mm-dd| ��� ISO ��������������������������������������������� % ��������������������������� ISO 8601 ������������������ GB/T 7408--2005 % ��������������������������� ������������ ������������������������������ % \begin{arguments} % \item ������ % \item ������ % \item ������ % \end{arguments} % ������������������������������ \pkg{zhnumber} ������������������������������������������������������������ % ������������������������������ |\zhnumsetup{time=Chinese}| ������������������������ % ��������������������������������������������������������� \meta{������������}~\meta{���},~\meta{���}��� % ��������������������� |w| ��������������������������������������������������������������������������� % \begin{macrocode} \cs_new:Npn \@@_date:www #1-#2-#3 \q_stop { \__zhnum_date_aux:nnn {#1} {#2} {#3} } \cs_new:Npn \@@_date_en:www #1-#2-#3 \q_stop { \clist_item:Nn \c_@@_name_month_en_clist {#2} ~#3 , ~#1 } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_date:nn} % \begin{macrocode} \cs_new:Npn \@@_date:nn { \@@_date:nnn { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_date:nnn} % \changes{v0.20}{2022/05/24}{���������������������������������������������������������} % ��������������������������������������������������������������������������������������������� % \begin{macrocode} \cs_new:Npn \@@_date:nnn #1#2#3 { \tl_gset:cx { g_@@_info_ #2 date #1 _tl } { \tl_if_empty:nTF {#3} { \@@_name:n { blankdate #1 } } { \use:c { @@_date #1 :www } #3 \q_stop } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_at_begin_document:n} % ������ \LaTeX{} ��������������������������������� \tn{AtBeginDocument}��� % \begin{macrocode} \cs_new_protected:Npn \@@_at_begin_document:n #1 { \hook_gput_next_code:nn { begin document } {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cs_clear:N} % ��������������� % \begin{macrocode} \cs_new:Npn \@@_cs_clear:N #1 { \cs_set_eq:NN #1 \tex_relax:D } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_msg:nn} % ������������������������������ % \begin{macrocode} \cs_new:Npn \@@_msg:nn { \msg_new:nnn { njuthesis } } % \end{macrocode} % \end{macro} % % \subsubsection{������������} % \changes{v0.16}{2022/03/10}{������������������������������������������������������} % % \begin{macro}{\@@_loop_until:nnn} % ��������� plain \TeX ��� \tn{loop} ������������������������\\ % \tn{loop}\meta{���������1}\meta{������������}\meta{���������2}\tn{repeat}��� % \begin{arguments} % \item |bool| ��������� % \item ���������1 % \item ���������2 % \end{arguments} % ���������������������������������������\meta{���������1}������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_loop_until:nnn #1#2#3 { #2 \bool_if:nF {#1} { #3 \@@_loop_until:nnn {#1} {#2} {#3} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_breakpar_loop:n} % \changes{v1.0}{2022/08/01}{������ \LaTeX3 ������������������������������������} % ������������������������������������ % \begin{arguments} % \item ���������2��������������� % \end{arguments} % \begin{macrocode} \cs_new:Npn \@@_breakpar_loop:n #1 { \dim_set:Nn \l_@@_tmpa_dim { - \tex_prevdepth:D - \l_@@_ruledpi_dim - \l_@@_rulehti_dim } \hbox_gset:Nn \l_@@_tmpc_box { } \@@_loop_until:nnn { \box_if_empty_p:N \l_@@_tmpb_box } { \box_gset_to_last:N \l_@@_tmpb_box \tex_unskip:D \tex_unpenalty:D } { \hbox_gset:Nn \l_@@_tmpc_box { \vbox_top:n { \box_use_drop:N \l_@@_tmpb_box \__kernel_kern:n { \l_@@_tmpa_dim } \tex_hrule:D } \tex_penalty:D \l_@@_tmpa_box \hbox_unpack_drop:N \l_@@_tmpc_box } #1 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_breakpar_print:nn} % ������������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_breakpar_print:nn #1#2 { \group_begin: \tex_noindent:D #1 \hbox_unpack_drop:N \l_@@_tmpc_box #2 \tex_par:D \group_end: } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_uline_title:} % \changes{v0.17}{2022/04/09}{������������������������������������} % ��������������������������������� \TeX ��������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_uline_title: { \vbox_set:Nn \l_@@_tmpa_box { \skip_set:Nn \tex_leftskip:D { .5 em plus 1 fill } \skip_set_eq:NN \tex_rightskip:D \tex_leftskip:D \g_@@_info_title_tl \tex_par:D % \end{macrocode} % ��������������������������������������������������� 3 ������������ % \begin{macrocode} \@@_breakpar_loop:n { } } % \end{macrocode} % ��������������������������� % \begin{macrocode} \@@_breakpar_print:nn { } { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_entry_title:NNNN,\@@_cover_entry_title:NNN} % ��������������������������������������������������������������������� % \begin{arguments} % \item ��������� % \item ���������������������|dim| ��������� % \item ���������������������|dim| ��������� % \item ������������ % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_cover_entry_title:NNNN #1#2#3#4 { \tl_if_empty:NT \g_@@_info_title_tl { \msg_error:nn { njuthesis } { missing-title } } \@@_box_spread_name:NNn #2 #4 { title } \mode_leave_vertical: #1 % \end{macrocode} % ������������������ \tn{prevdepth} ��������������� \tn{parbox} ������������������ % \footnote{\url{https://tex.stackexchange.com/q/34971/}} % \begin{macrocode} \parbox [ t ] {#3} { \l_@@_fmt_covertitle_tl \@@_uline_title: \dim_gset_eq:NN \l_@@_tmpa_dim \tex_prevdepth:D } \tex_par:D \dim_set_eq:NN \tex_prevdepth:D \l_@@_tmpa_dim } \cs_new:Npn \@@_cover_entry_title:NNN { \@@_cover_entry_title:NNNN \@@_hskip: } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_entry:NNNNn,\@@_cover_entry:NNNn} % ��������������������������� % \begin{arguments} % \item ��������� % \item ���������������������|dim| ��������� % \item ���������������������|dim| ��������� % \item ������������ % \item ������������ % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_cover_entry:NNNNn #1#2#3#4#5 { \@@_box_spread_name:NNn #2 #4 {#5} #1 \@@_box_ulined_info:Nn #3 {#5} \tex_par:D } \cs_new:Npn \@@_cover_entry:NNNn { \@@_cover_entry:NNNNn \@@_hskip: } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_entry:NNNnn} % ������������������������������������������������������ % \begin{arguments} % \item ���������������������|dim| ��������� % \item ���������������������|dim| ��������� % \item ������������ % \item ������������������ % \item ������������������ % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_cover_entry:NNNnn #1#2#3#4#5 { \@@_box_spread_name:NNn #1 #3 {#4} \@@_hskip: \@@_box_ulined_info:Nn #2 {#4} \@@_hskip: \@@_box_spread_name:NNn #1 #3 {#5} \@@_hskip: \@@_box_ulined_info:Nn #2 {#5} \tex_par:D } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_entry_supv:NNNn} % ������������������������������������������������������������ % \begin{arguments} % \item ������������������������|dim| ��������� % \item ������������������������|dim| ��������� % \item ������������ % \item ������������ % \end{arguments} % |clist| ������������������������������������������������������ \cs{q_novalue_tl}��� % ��������������������������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_cover_entry_supv:NNNn #1#2#3#4 { \tl_set:Nn \l_@@_tmpa_tl { \clist_item:cn { g_@@_info_ #4 _clist } { 1 } } \tl_set:Nn \l_@@_tmpb_tl { \clist_item:cn { g_@@_info_ #4 _clist } { 2 } } \@@_box_spread_name:NNn #1 #3 {#4} \@@_hskip: \@@_box_ulined:NN #2 \l_@@_tmpa_tl \@@_hskip: \@@_box_spread_name:NNn #1 #3 { supvtitle } \@@_hskip: \@@_box_ulined:NN #2 \l_@@_tmpb_tl \tex_par:D } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_emblem:N,\@@_name:N} % ��������������������������������������������������� % ������ \tn{njuemblem}���\tn{njuname} ��������������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_emblem:N #1 { \njuemblem [ \l_@@_fmt_emblemcolor_tl ] {#1} { ! } } \cs_new_protected:Npn \@@_name:N #1 { \njuname [ \l_@@_fmt_namecolor_tl ] {#1} { ! } } % \end{macrocode} % \end{macro} % % \subsubsection{������������} % % \begin{macro}{\@@_abs_bookmark:nn,\@@_abs_bookmark:Vn} % \changes{v0.14}{2021/12/21}{������������������������} % ������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_abs_bookmark:nn #1#2 { \phantomsection \@@_bookmark:Nnn \g_@@_abs_showentry_bool {#1} {#2} \@@_chapter_header:n {#1} } \cs_generate_variant:Nn \@@_abs_bookmark:nn { Vn } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_abs_title:N} % ������������������������������������ % \begin{arguments} % \item ���������|dim| ��������� % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_abs_title:N #1 { \@@_get_width:NV \l_@@_tmpa_dim #1 \@@_uuline:N \l_@@_tmpa_dim #1 } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_uline_list:NNn,\@@_uline_list:NNe} % \changes{v0.16}{2022/03/25}{������������������������������������������������} % ��������������������������������������������� % \begin{arguments} % \item ������ % \item ��������� % \item ������ % \end{arguments} % ��������������������� plain \TeX{} ��������������������������������� % \footnote{\url{https://tex.stackexchange.com/q/637861/}������������������������������������������ % \href{http://petr.olsak.net/ftp/olsak/optex/tex-nutshell.pdf}{\file{tex-nutshell.pdf}}���} % \begin{macrocode} \cs_new_protected:Npn \@@_uline_list:NNn #1#2#3 { \vbox_set:Nn \l_@@_tmpa_box { \@@_get_width:Nn \tex_hangindent:D {#3} \int_set:Nn \tex_hangafter:D { -1 } \skip_set_eq:NN \tex_leftskip:D #2 \skip_set_eq:NN \tex_rightskip:D \tex_leftskip:D \tex_noindent:D #1 \tex_par:D % \end{macrocode} % ��������������������������������������������������� 3 ��������������������������������� % \begin{macrocode} \int_gzero:N \l_@@_tmpa_int \@@_breakpar_loop:n { \int_gincr:N \l_@@_tmpa_int } } \@@_breakpar_print:nn {#3} { % \end{macrocode} % ������������������������������������������������������������������ \opt{strict} % ������ \opt{natural} ������������������������������������������������������������ % ��������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������� % \begin{macrocode} \bool_if:NT \g_@@_abs_title_strict_bool { \int_case:nnF { \l_@@_tmpa_int } { { 0 } { \msg_error:nn { njuthesis } { missing-title } } { 1 } { \@@_uline:n { \textwidth } } { 2 } { } } { \msg_warning:nn { njuthesis } { abs-title-too-long } } \tex_par:D } } } \cs_generate_variant:Nn \@@_uline_list:NNn { NNe } % \end{macrocode} % \end{macro} % % % \subsection{������������} % \changes{v0.15}{2022/01/24}{������ \pkg{xtemplate} ���������������} % % ��������������� \pkg{xtemplate} ������������������������������������������������������������������ % % ������������������������������element���������������������page������������������������������ % ������������������������������������������������������������������������������������������������ % ��������������������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������������� Instance % ��������������� \pkg{xtemplate} ������������������������������������������������������������ % ���template���������������������������������\emph{������������}������������instance������ % ������������������������������������������������������������������������������ % % ��������������������������������������������������� % \begin{macrocode} \DeclareObjectType { nju } { \c_zero_int } % \end{macrocode} % % \subsubsection{������������} % \changes{v1.0}{2022/08/02}{������������������������������������������} % % \begin{macrocode} %<@@=njuelem> % \end{macrocode} % % \begin{macro}{\@@_align:} % ��������������������������� % ��������������������������������������������������������������������������� % ������������������������������������������������ % \begin{description} % \item[\opt{content}] ��������������������������������������� % \item[\opt{format}] ������������������������������ % \item[\opt{bottom-skip}] ������������������������������������������ % \item[\opt{align}] ������������������������������������������������������������������ % \end{description} % \begin{macrocode} \DeclareTemplateInterface { nju } { element } { \c_zero_int } { content : tokenlist = \c_empty_tl, format : tokenlist = \c_empty_tl, bottom-skip : skip = \c_zero_skip, align : choice { l, r, c, n } = c } % \end{macrocode} % % ��������������������������������������������������������������� % \begin{macrocode} \DeclareTemplateCode { nju } { element } { \c_zero_int } { content = \l_@@_content_tl, format = \l_@@_format_tl, bottom-skip = \l_@@_bottom_skip, align = { l = { \cs_set_eq:NN \@@_align: \raggedright }, r = { \cs_set_eq:NN \@@_align: \raggedleft }, c = { \cs_set_eq:NN \@@_align: \centering }, n = { \cs_set:Nn \@@_align: { } } } } { \AssignTemplateKeys \group_begin: \@@_align: \l_@@_format_tl \l_@@_content_tl \tex_par:D \group_end: \__nju_vskip:N \l_@@_bottom_skip } % \end{macrocode} % \end{macro} % % \subsubsection{������������} % \changes{v1.0}{2022/07/27}{������������������������������������} % % \begin{macrocode} %<@@=njupage> % \end{macrocode} % % \begin{macro}{\exp_args:NVV} % \begin{macrocode} \exp_args_generate:n { NVV } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_bookmark:nn} % ��������������������������� % ��������������������������������������������������������������������������� % \begin{description} % \item[\opt{element}] ������������������������������������������������ % \item[\opt{prefix}] ������������������ % \item[\opt{format}] ��������������������� % \item[\opt{top-skip}] ��������������������������������������� % \item[\opt{bottom-skip}] ��������������������������������������� % \item[\opt{bm-text}] PDF ������������ % \item[\opt{bm-name}] PDF ��������������� % \item[\opt{bookmark}] ��������������������������������������������������� PDF ��������������������� % \end{description} % \begin{macrocode} \DeclareTemplateInterface { nju } { page } { \c_zero_int } { element : commalist = \c_empty_clist, prefix : tokenlist = \c_empty_tl, format : tokenlist = \c_empty_tl, top-skip : skip = \c_zero_skip, bottom-skip : skip = \c_zero_skip, bm-text : tokenlist = \c_empty_tl, bm-name : tokenlist = \c_empty_tl, bookmark : choice { toc, pdf, none } = none } % \end{macrocode} % % ��������������������������� % \begin{macrocode} \DeclareTemplateCode { nju } { page } { \c_zero_int } { element = \l_@@_element_clist, prefix = \l_@@_prefix_tl, format = \l_@@_format_tl, top-skip = \l_@@_top_skip, bottom-skip = \l_@@_bottom_skip, bm-text = \l_@@_bm_text_tl, bm-name = \l_@@_bm_name_tl, bookmark = { toc = { \cs_set_eq:NN \@@_bookmark:nn \__nju_bookmark_toc:nn }, pdf = { \cs_set_eq:NN \@@_bookmark:nn \__nju_bookmark_pdf:nn }, none = { \cs_set:Nn \@@_bookmark:nn { } } } } { \AssignTemplateKeys \clearpage \thispagestyle { empty } % \end{macrocode} % ���������������������������������\tn{vspace*} ������������������������������������������������������������ % \begin{macrocode} \__nju_vskip:N \l_@@_top_skip \exp_args:NVV \@@_bookmark:nn \l_@@_bm_text_tl \l_@@_bm_name_tl \group_begin: \l_@@_format_tl \clist_map_inline:Nn \l_@@_element_clist { \UseInstance { nju } { \l_@@_prefix_tl ##1 } } \group_end: \__nju_vskip:N \l_@@_bottom_skip } % \end{macrocode} % \end{macro} % % \subsubsection{������������} % % \begin{macro}{\@@_declare_element:nn,\@@_declare_page:nn} % ������ \pkg{xtemplate} ������������������������������������������������ % \begin{arguments} % \item ������������ % \item ������������ % \end{arguments} % \begin{macrocode} %<@@=nju> \cs_new:Npn \@@_declare_element:nn #1#2 { \DeclareInstance { nju } {#1} { element } {#2} } \cs_new:Npn \@@_declare_page:nn #1#2 { \DeclareInstance { nju } {#1} { page } {#2} } % \end{macrocode} % \end{macro} % % % \subsection{������������} % \changes{v1.1}{2022/12/03}{���������������������} % % ��������������������������������������������� % \begin{macrocode} \@@_msg:nn { abs-title-too-long } { Your~ title~ seems~ too~ long~ to~ fit~ in~ two~ lines.\\ I~ have~ drawn~ additional~ lines~ to~ contain~ it,~ which~ will~ probably~ make~ your~ abstract~ page~ look~ slightly~ different~ from~ the~ standard.~ You~ can~ use~ the~ "abstract/title-style"~ key~ to~ disable~ this~ message. } \@@_msg:nn { empty-theorem-type } { Empty~ theorem~ list~ to~ define.\\ The~ key~ "theorem/type"~ should~ not~ be~ left~ empty. } \@@_msg:nn { load-config } { I~ am~ loading~ config~ file~ "#1". } \@@_msg:nn { missing-image } { You~ have~ not~ selected~ local~ files~ for~ emblem~ and~ name~ images.\\ It~ seems~ that~ you~ haven't~ fill~ in~ both~ "image/nju-emblem"~ and~ "image/nju-name",~ therefore~ I~ am~ using~ the~ package~ "njuvisual"~ instead,~ which~ may~ slow~ down~ the~ compilation. } \@@_msg:nn { missing-ntheorem } { "ntheorem"~ package~ not~ detected.\\ The~ functionality~ of~ built-in~ theorem~ settings~ requires~ loading~ the~ class~ with~ "ntheorem"~ option~ set~ to~ "true". } \@@_msg:nn { missing-symbol } { \string\mdwhtsquare\ and~ \string\checkmark\ are~ not~ contained~ in~ the~ standard~ amsmath~ package.~ You~ should~ redefine~ them~ with~ other~ packages~ loaded~ to~ properly~ generate~ the~ declaration~ page. } \@@_msg:nn { missing-title } { Thesis~ title~ should~ not~ be~ left~ blank.\\ Please~ check~ whether~ you~ have~ fill~ in~ both Chinese~ and~ English~ titles. } \@@_msg:nn { no-small-caps } { I~ am~ using~ TeX~ Gyre~ Termes~ as~ default~ Roman~ font.\\ This~ is~ because~ the~ "Times~ New~ Roman"~ font~ in~ your~ system~ does~ not~ embed~ glyphs~ for~ small~ capitals.~ You~ can~ ignore~ this~ warning~ if~ you~ do~ not~ need~ \string\textsc.~ For~ more~ information,~ please~ refer~ to~ section~ 3.2.6~ of~ the~ documentation. } \@@_msg:nn { package-too-old } { Package~ "#1"~ is~ too~ old.\\ The~ "njuthesis"~ class only~ supports~ "#1"~ with~ a~ version~ higher~ than~ v#2.~ Please~ update~ an~ up-to-date~ version~ of~ it~ using~ your~ TeX~ package~ manager~ or~ from~ CTAN. } \@@_msg:nn { package-conflict } { The~ "#2"~ package~ is~ incompatible~ with~ "#1".\\ I~ have~ loaded~ "#1"~ by~ default.~ Maybe~ You~ should~ refer~ to~ section~ 4~ of~ the~ documentation. } \@@_msg:nn { missing-stzhongs } { "STZHONGS.TTF"~ is~ not~ found~ in~ your~ system.\\ The~ font~ is~ normally~ distributed~ with~ MS~ Windows.~ I~ have~ used~ songti~ for~ substitution. } % \end{macrocode} % % % \subsection{������������} % \changes{v0.11}{2021/11/15}{������������������������} % % \begin{macro}{\@@_pass_option:nn} % ������ \LaTeXe{} ��������������������������������������������� % \begin{macrocode} \cs_new:Npn \@@_pass_option:nn #1#2 { \PassOptionsToClass {#2} {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_pass_option:n,\@@_pass_option:V,\@@_pass_option:e} % \begin{macrocode} \cs_new:Npn \@@_pass_option:n { \@@_pass_option:nn { ctexbook } } \cs_generate_variant:Nn \@@_pass_option:n { V } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_pass_option:} % \begin{macrocode} \cs_new:Npn \@@_pass_option: { \@@_pass_option:V \l_keys_key_str } % \end{macrocode} % \end{macro} % % \begin{macrocode} \keys_define:nn { nju } { % \end{macrocode} % % \begin{macro}{type} % \changes{v1.0}{2022/06/30}{���������������������} % ��������������������������� % \begin{macrocode} type .choices:nn = { bachelor, master, doctor, postdoc } { \int_gset_eq:NN \g_@@_info_type_int \l_keys_choice_int }, type .initial:n = bachelor, % \end{macrocode} % \end{macro} % % \begin{macro}{degree} % \changes{v1.0}{2022/06/30}{���������������������} % ��������������������������������������������������� % \begin{macrocode} degree .choice:, degree / academic .code:n = { \bool_gset_true:N \g_@@_opt_academic_bool }, degree / professional .code:n = { \bool_gset_false:N \g_@@_opt_academic_bool }, degree .initial:n = academic, % \end{macrocode} % \end{macro} % % \begin{macro}{nl-cover,\g_@@_opt_nlcover_bool} % ��������������������������������������������������������������������������������������� % \footnote{nl ������ National Library���} % \begin{macrocode} nl-cover .bool_gset:N = \g_@@_opt_nlcover_bool, nl-cover .initial:n = false, % \end{macrocode} % \end{macro} % % \begin{macro}{decl-page,\g_@@_opt_decl_bool} % \changes{v0.13}{2021/12/15}{������������������������������} % \changes{v0.14}{2022/01/06}{���������������������} % ������������������������������������������������������������������ % \footnote{��������������������������������� Declaration of Originality��� % ������������������������������������������������������������������������������������������������������} % \begin{macrocode} decl-page .bool_gset:N = \g_@@_opt_decl_bool, decl-page .initial:n = false, % \end{macrocode} % \end{macro} % % \begin{macro}{draft} % \changes{v0.13}{2021/12/15}{���������������������������} % \changes{v1.4}{2024/03/19}{���������������������������������������} % ��������������������������������������������� % \begin{macrocode} draft .value_forbidden:n = true, draft .code:n = { \bool_gset_true:N \g_@@_opt_draft_bool \@@_pass_option: }, % \end{macrocode} % \end{macro} % % \begin{macro}{oneside,twoside} % \changes{v0.14}{2022/01/14}{������������������������������} % ��������������������������������������� % \begin{macrocode} oneside .value_forbidden:n = true, twoside .value_forbidden:n = true, oneside .code:n = { \bool_gset_false:N \g_@@_opt_twoside_bool \tl_gset:Nn \g_@@_name_pagemode_tl { oneside } \@@_pass_option: }, twoside .code:n = { \bool_gset_true:N \g_@@_opt_twoside_bool \tl_gset:Nn \g_@@_name_pagemode_tl { twoside } \@@_pass_option: }, % \end{macrocode} % \end{macro} % % \begin{macro}{anonymous} % \changes{v0.18}{2022/04/19}{���������������������������} % \changes{v1.0}{2022/07/05}{������������������������������} % \changes{v1.4}{2024/04/19}{���������������������������������������} % \begin{macro}{\g_@@_opt_anon_bool} % ��������������� % \begin{macrocode} anonymous .value_forbidden:n = true, anonymous .bool_gset:N = \g_@@_opt_anon_bool, anonymous .initial:n = false, % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{latin-font,cjk-font} % \changes{v0.14}{2021/12/12}{���������������������������} % ������������������������\opt{fandol} ��� \opt{gyre} ��������������� % \begin{macrocode} latin-font .choices:nn = { fandol, gyre, mac, macoffice, win, none } { \tl_gset:Nn \g_@@_font_latin_tl {#1} }, cjk-font .choices:nn = { fandol, founder, mac, macoffice, noto, source, win, none } { \tl_gset:Nn \g_@@_font_cjk_tl {#1} }, % \end{macrocode} % \end{macro} % % \begin{macro}{latin-font,cjk-font} % \changes{v1.4}{2023/12/15}{������������������������������������} % ������������������������\opt{fontset} ��������������� \pkg{ctex} ��������������� % \begin{macrocode} fontset .choices:nn = { fandol, mac, macoffice, win, none } { \keys_set:nn { nju } { latin-font = #1, cjk-font = #1 } }, % \end{macrocode} % \end{macro} % % \begin{macro}{math-font} % \changes{v1.0}{2022/07/02}{���������������������������������} % ��������������������� % ��� \pkg{unicode-math} ������ \XeTeX ��� \LuaTeX ��������������������������� % \begin{macrocode} math-font .choices:nn = { asana, cambria, fira, garamond, lm, libertinus, newcm, stix, bonum, dejavu, pagella, schola, termes, xits, none } { \tl_gset_eq:NN \g_@@_font_math_tl \l_keys_choice_tl }, math-font .initial:n = xits, % \end{macrocode} % \end{macro} % % \begin{macro}{font-path} % ������������������������������ % \begin{macrocode} font-path .code:n = { \bool_gset_true:N \g_@@_font_path_bool \tl_gset_eq:NN \g_@@_font_path_tl \l_keys_value_tl }, % \end{macrocode} % \end{macro} % % \begin{macro}{zihao} % \changes{v1.0}{2022/07/04}{���������������������} % \begin{macro}{\g_@@_opt_zihao_tl} % ������������������������������ % \begin{macrocode} zihao .code:n = { \@@_pass_option:n { zihao = #1 } }, zihao .initial:n = -4, % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{linespread} % \changes{v1.0}{2022/07/04}{���������������������} % \begin{macro}{\g_@@_opt_linespread_tl} % ���������\LaTeX ������1.2���������MS Word ���������������1.3���������1.5��� % Word ������������������������ $1.5\times\frac{1.3}{1.2} = 1.625$��� % ��������������������������� \pkg{zhlineskip} ��������������� % \begin{macrocode} linespread .code:n = { \@@_pass_option:n { linespread = #1 } }, linespread .initial:n = 1.625, % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{config,\g_@@_config_clist} % \changes{v0.16}{2022/02/23}{������ \opt{config} ���������} % ��������������������� % \begin{macrocode} config .clist_gset:N = \g_@@_config_clist } % \end{macrocode} % \end{macro} % % ��������������������������� % \begin{macrocode} \keys_set:nn { nju } { twoside } % \end{macrocode} % % \begin{macro}{\g_@@_name_optional_pkg_clist} % \begin{macrocode} \clist_new:N \g_@@_name_optional_pkg_clist % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_define_pkg_keys:nnn} % \begin{arguments} % \item ��������� % \item ������������������������������������������������ % \item ������������������ % \end{arguments} % ������������������������������������������������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_define_pkg_keys:nnn #1#2#3 { \keys_define:nn { nju } { #1 .bool_gset:c = { g_@@_opt_load_ #2 _bool }, #1 .initial:n = #3 } \cs_new_protected:cpn { @@_loadpkg_ #2 : } { \bool_if:cT { g_@@_opt_load_ #2 _bool } { \RequirePackage {#1} } } \clist_gput_right:Nn \g_@@_name_optional_pkg_clist {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{ % biblatex, % cleveref, % enumitem, % footmisc, % ntheorem, % unicode-math, % \g_@@_opt_load_blx_bool, % \g_@@_opt_load_cref_bool, % \g_@@_opt_load_nthm_bool, % \g_@@_opt_load_enit_bool, % \g_@@_opt_load_fm_bool, % \g_@@_opt_load_um_bool, % \@@_loadpkg_blx:, % \@@_loadpkg_cref:, % \@@_loadpkg_enit:, % \@@_loadpkg_fm:, % \@@_loadpkg_nthm:, % \@@_loadpkg_um:} % \begin{macrocode} \clist_map_inline:nn { { biblatex } { blx } { true }, { cleveref } { cref } { true }, { ntheorem } { nthm } { true }, { enumitem } { enit } { true }, { footmisc } { fm } { true }, { unicode-math } { um } { true } } { \@@_define_pkg_keys:nnn #1 } % \end{macrocode} % \end{macro} % % \begin{macro}{minimal} % \changes{v1.0}{2022/08/03}{������������������������������������} % ��������������������������������������������������������������� % \begin{macrocode} \keys_define:nn { nju } { minimal .value_forbidden:n = true, minimal .code:n = { \clist_map_inline:Nn \g_@@_name_optional_pkg_clist { \keys_set:nn { nju } { ##1 = false } } \keys_set:nn { nju } { math-font = none } } } % \end{macrocode} % \end{macro} % % ��������������������������������� % \begin{macrocode} \ProcessKeysOptions { nju } % \end{macrocode} % % % \subsection{������������} % % \begin{macro}{abstract, anonymous-mode, bib, image, footer, % footnote, header, info, label-sep, listoffigures, listoftables, % math, style, theorem, tableofcontents} % ������������������������meta��������������� % \begin{macrocode} \clist_map_inline:nn { abstract, anonymous-mode, bib, image, footer, footnote, header, info, label-sep, listoffigures, listoftables, math, style, theorem, tableofcontents } { \keys_define:nn { nju } { #1 .meta:nn = { nju / #1 } {##1} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_keys_set:nn} % % \begin{macrocode} \cs_new_eq:NN \@@_keys_set:nn \keys_set:nn % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_keys_set_anon:nn} % \changes{v1.1}{2022/09/26}{������ \cs{keys_set_filter:nnn} ���������������������} % ������������������������������������������ \opt{anonymous} ��������������������������� % \begin{macrocode} \cs_new:Npn \@@_keys_set_anon:nn #1#2 { \keys_set_filter:nnn {#1} { anonymous } {#2} } % \end{macrocode} % \end{macro} % % \begin{macro}{\njusetup} % \changes{v0.6}{2021/09/10}{������������������������������} % \changes{v1.0}{2022/08/01}{���������������������������������������} % ��������������������� % \begin{arguments} % \item ������������������ % \item ��������� % \end{arguments} % \cls{njuthesis} ��������������������������������������������������������������� % \opt{nju}��������������������������������������������������������������������������� % ��������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������������������������� % ��������������������������������������������������������������������� % \begin{macrocode} \NewDocumentCommand \njusetup { o m } { \tl_if_novalue:nTF {#1} { \@@_keys_set:nn { nju } {#2} } { \tl_if_in:nnTF {#1} { / } { \@@_keys_set:nn { nju } { #1 = {#2} } } { \@@_keys_set:nn { nju / #1 } {#2} } } } % \end{macrocode} % \end{macro} % \tn{njusetup} ��������������������������� % \begin{macrocode} \@onlypreamble \njusetup % \end{macrocode} % % \begin{macro}{\njusetformat} % \changes{v0.17}{2022/04/09}{������������������������������������} % \changes{v0.19}{2022/05/11}{������������������������������������������} % \changes{v0.20}{2022/05/25}{������������������������������������������} % \changes{v0.20}{2022/05/25}{������������������������������������������������} % ������������������������������������ % \begin{macrocode} \NewDocumentCommand \njusetformat { m m } { \@@_define_fmt:nn {#1} {#2} } % \end{macrocode} % \end{macro} % % \begin{macro}{\njusetlength,\njusetlength*} % \changes{v0.17}{2022/04/09}{���������������������������������} % \changes{v0.18}{2022/04/20}{���������������������������������} % ������������������������������������������������������������������������ % \begin{macrocode} \NewDocumentCommand \njusetlength { s m m } { \bool_if:nTF {#1} { \skip_gset:cn { l_@@_ #2 _skip } {#3} } { \dim_gset:cn { l_@@_ #2 _dim } {#3} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\njusetname,\njusetname*,\njusettext,\njusettext*} % \changes{v0.17}{2022/04/01}{������������������������������������} % \changes{v1.1}{2022/12/12}{������ \tn{njusetname} ��� \tn{njusettext} ������������������������} % ������������������������������������ % \begin{macrocode} \NewDocumentCommand \njusetname { s m O{} m } { \@@_set_tokenlist:nnnnn {#1} {#2} {#3} {#4} { name } } \NewDocumentCommand \njusettext { s m O{} m } { \@@_set_tokenlist:nnnnn {#1} {#2} {#3} {#4} { text } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_set_tokenlist:nnnnn} % ��������������������������������������������������� % \begin{arguments} % \item ��������������������������������� |bool| ��������� % \item ��������������������� % \item ��������������������������������� % \item ������������������ % \item ���������name ������ text % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_set_tokenlist:nnnnn #1#2#3#4#5 { \bool_if:nTF {#1} { \tl_set_eq:NN \l_@@_tmpb_tl \l_@@_name_suffix_en_tl } { \tl_clear:N \l_@@_tmpb_tl } \tl_gset:cn { l_@@_ #5 _ #2 #3 \l_@@_tmpb_tl _tl } {#4} } % \end{macrocode} % \end{macro} % % % \subsection{������������} % % \subsubsection{������������} % % \changes{v0.12}{2021/12/07}{���������������������������������} % ��������������� \cls{ctexbook} ������������ % \begin{macrocode} \@@_pass_option:n { a4paper, UTF8, scheme = chinese, % \end{macrocode} % ��������������������������������������������������������� % \begin{macrocode} fontset = none } % \end{macrocode} % % ������������������������ % \begin{macrocode} \clist_map_inline:nn { % \end{macrocode} % ������ |does not contain script "CJK"| ��������� % \begin{macrocode} % { quiet } { xeCJK }, { no-math } { fontspec }, { perpage } { footmisc }, { capitalise, nameinlink, noabbrev } { cleveref }, % \end{macrocode} % \pkg{ntheorem} ������ \pkg{amsthm} ��� \pkg{thmmarks} ������ QED ������������������ % \begin{macrocode} { amsmath, thmmarks, noconfig } { ntheorem } } { \PassOptionsToPackage #1 } % \end{macrocode} % % \subsubsection{���������������} % % ������\pkg{ctexbook}������������������������ % \begin{macrocode} \LoadClass { ctexbook } [ 2018/04/01 ] % \end{macrocode} % % \subsubsection{������������} % % \changes{v0.14}{2021/12/21}{������ \pkg{hologo}���} % \changes{v0.15}{2022/01/17}{������ \pkg{url}���} % \changes{v0.13}{2021/12/13}{������ \pkg{ntheorem} ��������������������� % ������ \pkg{amsthm} ��� \pkg{thmtools}���} % \changes{v0.16}{2022/03/19}{��������������� \pkg{amsmath}���} % \changes{v0.18}{2022/04/20}{��������������� \pkg{ntheorem}���} % \changes{v1.0}{2022/07/03}{������ \pkg{mathtools}���} % \changes{v1.0}{2022/08/03}{��������������� \pkg{ntheorem}���} % % \begin{macrocode} \@@_loadpkg_enit: \@@_loadpkg_fm: % \end{macrocode} % ��������� \pkg{cleveref} ��� \pkg{unicode-math} % ������������������������������������������������ \pkg{amsmath}��� % \begin{macrocode} \bool_if:NTF \g_@@_opt_load_um_bool { \RequirePackage { unicode-math } } { \RequirePackage { amsmath } \bool_if:NT \g_@@_opt_decl_bool { \msg_warning:nn { njuthesis } { missing-symbol } \cs_new:Npn \mdwhtsquare { } \cs_new:Npn \checkmark { } } } % \end{macrocode} % % ��������������������� % \begin{macrocode} \RequirePackage { geometry, fancyhdr, setspace, % \end{macrocode} % \changes{v0.14}{2021/12/21}{��������������� \pkg{multirow}���\pkg{subcaption} % ��� \pkg{wrapfig}���} % ������������������ % \begin{macrocode} booktabs, caption, graphicx, } \@@_loadpkg_nthm: % \end{macrocode} % \pkg{hyperref} ��������������������������������������������������������������� % \begin{macrocode} \RequirePackage { hyperref } % \end{macrocode} % % \changes{v1.3}{2024/01/16}{������ \pkg{cleveref} ��� \pkg{ntheorem} ������������} % \pkg{cleveref} ��������� \pkg{ntheorem} ��� \pkg{hyperref} ������������ % \begin{macrocode} \@@_loadpkg_cref: % \end{macrocode} % % ��������������������������� \pkg{emptypage} ��������������������������������������������� % \begin{macrocode} \bool_if:NT \g_@@_opt_twoside_bool { \RequirePackage { emptypage } } % \end{macrocode} % % \changes{v0.13}{2021/12/13}{������������ \pkg{ntheorem} ��������� \pkg{microtype}���} % \begin{macro}{\njuline} % ������������������������������������������������������������������������������������������������ % \begin{macrocode} \sys_if_engine_xetex:T { \RequirePackage { xeCJKfntef } \cs_new_eq:NN \njuline \CJKunderline } % \end{macrocode} % \pkg{lua-ul} ������������������������ \tn{null} ��������������������� % \begin{macrocode} \sys_if_engine_luatex:T { \RequirePackage { lua-ul } \NewDocumentCommand \njuline { m } { \underLine {#1} \@@_null: } } %</class> % \end{macrocode} % \end{macro} % % ������ \pkg{tabularray} ������������������������������������ % \begin{macrocode} %<def-g>\bool_if:NT \g_@@_opt_decl_bool { \RequirePackage { tabularray } } % \end{macrocode} % % \subsubsection{������������} % % \begin{macro}{\@@_check_pkg_version:nnn} % ��������������������������������� % \begin{macrocode} %<*class> \cs_new:Npn \@@_check_pkg_version:nnn #1#2#3 { \@ifpackagelater {#1} {#2} { } { \msg_error:nnnn { njuthesis } { package-too-old } {#1} {#3} } } % \end{macrocode} % \end{macro} % % ������������������������������ \pkg{luatexja} ������������������������ 2021-09-18 ��������� % ������������������������������������������ 2021-10-24 ��������������������������������������������� % \begin{macrocode} \sys_if_engine_luatex:T { \@@_check_pkg_version:nnn { luatexja } { 2021/10/24 } { 20211024.0 } } % \end{macrocode} % % \changes{v0.18}{2022/04/28}{���������������������������} % \changes{v1.0}{2022/08/03}{������ \pkg{filehook}��������� \pkg{ctex} ������������������������} % % \begin{macro}{\@@_check_pkg_conflict:nn} % ������������������������������������������������������������������ % \begin{arguments} % \item ��������������������� % \item ��������������������� % \end{arguments} % \begin{macrocode} \cs_new:Npn \@@_check_pkg_conflict:nn #1#2 { \ctex_at_begin_package:nn {#2} { \msg_warning:nnnn { njuthesis } { package-conflict } {#1} {#2} } } % \end{macrocode} % \end{macro} % % ��������������������������� % \begin{macrocode} \bool_if:NT \g_@@_opt_load_um_bool { \clist_map_inline:nn { amscd, amsfonts, amssymb, bbm, bm, eucal, eufrak, mathrsfs, newtxmath, upgreek } { \@@_check_pkg_conflict:nn { unicode-math } {#1} } } % \end{macrocode} % % \subsection{������������} % % \cls{njuthesis} ���������������������������������������������������������\emph{���������}��� % \emph{���������}���\emph{���������}������������������������������������������������������������ % ������������������������������������������������������������������������������������������������������ % ������������������������������������������������������������������������������������������������������ % ��������������������������������������������������������������������������������������������������� % \begin{macrocode} \exp_args:Ne \file_input:n { njuthesis- \int_case:nn { \g_@@_info_type_int } { { 1 } { undergraduate } { 2 } { graduate } { 3 } { graduate } { 4 } { postdoctoral } } .def } % \end{macrocode} % % ��������������������������������������������������������� % \begin{macrocode} \clist_map_inline:Nn \g_@@_config_clist { \msg_info:nnn { njuthesis } { load-config } {#1} \file_input:n {#1} } % \end{macrocode} % % % \subsection{������������} % \changes{v0.11}{2021/10/01}{������������������������������������������������������������������} % \changes{v0.15}{2022/01/22}{���������������������������������������������} % % \begin{macrocode} \keys_define:nn { nju / info } { % \end{macrocode} % % \begin{macro}{info/title,info/title*} % \changes{v0.13}{2021/12/12}{������������������������������������} % \changes{v0.14}{2022/01/14}{��������������������������������� |\\|���} % ������������������������������ |\\| ������������������������������������|*|������������������������������������ % \begin{macrocode} title .tl_gset:N = \g_@@_info_title_tl , title .initial:n = { ��� } , title* .tl_gset:N = \g_@@_info_title_en_tl , title* .initial:n = { Empty } , % \end{macrocode} % \end{macro} % % \begin{macro}{info/keywords,info/keywords*} % \changes{v0.11}{2021/10/01}{������������������������������������} % ������������������ % \begin{macrocode} keywords .clist_gset:N = \g_@@_info_keywords_clist , keywords* .clist_gset:N = \g_@@_info_keywords_en_clist , % \end{macrocode} % \end{macro} % % \begin{macro}{info/grade,info/student-id,info/author,info/author*} % ��������������������������� % \begin{macrocode} grade .tl_gset:N = \g_@@_info_grade_tl , student-id .tl_gset:N = \g_@@_info_id_tl , author .tl_gset:N = \g_@@_info_author_tl , author* .tl_gset:N = \g_@@_info_author_en_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/department,info/department*, % info/major*,info/field,info/field*} % ��������������������������� % \begin{macrocode} department .tl_gset:N = \g_@@_info_dept_tl , department* .tl_gset:N = \g_@@_info_dept_en_tl , major* .tl_gset:N = \g_@@_info_major_en_tl , field .tl_gset:N = \g_@@_info_field_tl , field* .tl_gset:N = \g_@@_info_field_en_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/major} % \changes{v1.3}{2023/05/11}{������������������������������������������������������} % \changes{v1.3}{2023/12/05}{���������������������������������������} % ��������������������������������������������������������������������������������������������������� % \begin{macrocode} major .code:n = { \bool_if:NTF \g_@@_opt_academic_bool { \clist_pop:NN \l_keys_value_tl \l_@@_tmpa_tl \tl_gset_eq:NN \g_@@_info_major_tl \l_@@_tmpa_tl } { \clist_pop:NN \l_keys_value_tl \l_@@_tmpa_tl \tl_gset_eq:NN \g_@@_info_majorc_tl \l_@@_tmpa_tl \clist_pop:NNTF \l_keys_value_tl \l_@@_tmpa_tl { \tl_gset_eq:NN \g_@@_info_major_tl \l_@@_tmpa_tl } { \tl_gset_eq:NN \g_@@_info_major_tl \g_@@_info_majorc_tl } } }, % \end{macrocode} % \end{macro} % % \begin{macro}{info/supervisor,info/supervisor*} % \changes{v0.13}{2021/12/11}{���������������������������������������} % \changes{v0.14}{2022/01/12}{���������������������������} % ��������������������������������������� |clist| ��������������������������������������������������� % \begin{macrocode} supervisor .clist_gset:N = \g_@@_info_supv_clist , supervisor* .tl_gset:N = \g_@@_info_supv_en_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/supervisor-ii,info/supervisor-ii*} % ��������������������� % \begin{macrocode} supervisor-ii .clist_gset:N = \g_@@_info_supvii_clist , supervisor-ii* .tl_gset:N = \g_@@_info_supvii_en_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/chairman,info/reviewer} % ������������������������ % \begin{macrocode} chairman .tl_gset:N = \g_@@_info_chairman_tl , reviewer .clist_gset:N = \g_@@_info_reviewer_clist , % \end{macrocode} % \end{macro} % % \begin{macro}{info/clc,info/udc} % ������������ % \begin{macrocode} clc .tl_gset:N = \g_@@_info_clc_tl , udc .tl_gset:N = \g_@@_info_udc_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/secret-level} % ��������� % \begin{macrocode} secret-level .tl_gset:N = \g_@@_info_secretlv_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/supervisor-contact} % ��������������������� % \begin{macrocode} supervisor-contact .tl_gset:N = \g_@@_info_supvcont_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/email} % \changes{v0.14}{2022/01/12}{������������������������������} % ��������������������������������������������������������� % \begin{macrocode} email .tl_gset:N = \g_@@_info_email_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/school-code} % \changes{v1.2}{2023/04/27}{������������������������������} % ��������������� % \begin{macrocode} school-code .tl_gset:N = \g_@@_info_code_tl , school-code .initial:n = { 10284 } , % \end{macrocode} % \end{macro} % % \begin{macro}{info/degree,info/degree*} % \changes{v1.2}{2023/04/24}{������������������������������} % ��������������������������������� % \begin{macrocode} degree .tl_gset:N = \g_@@_info_degree_tl , degree* .tl_gset:N = \g_@@_info_degree_en_tl , % \end{macrocode} % \end{macro} % % ������������������������������������������������ % \begin{macrocode} } % \end{macrocode} % % \changes{v1.3}{2023/05/18}{���������������������������������������������} % % \begin{macro}{info/submit-date} % \changes{v0.14}{2022/01/14}{���������������������������} % \begin{macro}{info/defend-date} % \changes{v0.14}{2022/01/14}{���������������������������} % \begin{macro}{info/confer-date} % \changes{v0.19}{2022/05/23}{������������������������������������������������������������} % \begin{macro}{info/bottom-date} % \changes{v0.19}{2022/05/23}{������������������������������������������������������} % \begin{variable}{\g_@@_info_submitdate_tl,\g_@@_info_defenddate_tl, % \g_@@_info_bottomdate_tl,\g_@@_info_conferdate_tl} % ��������� % \begin{macrocode} \clist_map_inline:nn { submit, defend, confer, bottom } { \keys_define:nn { nju / info } { #1-date .code:n = \@@_date:nn {#1} {##1}, #1-date .initial:V = \c_@@_name_today_tl } } % \end{macrocode} % \end{variable} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % ������������������������ \opt{anonymous} ��������������������������������������������� % \begin{macrocode} \clist_map_inline:Nn \c_@@_name_anon_clist { \keys_define:nn { nju / info } { #1 .groups:n = { anonymous } } } \clist_map_inline:Nn \c_@@_name_anon_en_clist { \keys_define:nn { nju / info } { #1 * .groups:n = { anonymous } } } % \end{macrocode} % % \changes{v0.15}{2022/01/22}{������������������������������} % \changes{v1.1}{2022/11/04}{���������������������������������������������������������} % ������������������������������������������������������������������������ \pkg{ctex} ������������������ % ������������������������������������ % \begin{macrocode} \@@_at_begin_document:n { % \end{macrocode} % ������������������������������������ % \begin{macrocode} \tl_gset:Ne \g_@@_info_supvfull_tl { \clist_use:Nn \g_@@_info_supv_clist { \@@_quad: } } \clist_if_empty:NF \g_@@_info_supvii_clist { \bool_gset_true:N \g_@@_opt_supvii_bool \tl_gput_right:Ne \g_@@_info_supvfull_tl { \@@_quad: \clist_use:Nn \g_@@_info_supvii_clist { \@@_quad: } } } \tl_gset_eq:NN \g_@@_info_supvfull_en_tl \g_@@_info_supv_en_tl \tl_if_empty:NF \g_@@_info_supvii_en_tl { \tl_gput_right:Ne \g_@@_info_supvfull_en_tl { \@@_quad: \g_@@_info_supvii_en_tl } } } %</class> % \end{macrocode} % % \begin{variable}{\g_@@_info_submitdate_en_tl} % ������������������������������������������ % \begin{macrocode} %<*def-g> \cs_set:Npn \@@_date:nn #1#2 { \@@_date:nnn { } {#1} {#2} \@@_date:nnn { _en } {#1} {#2} } % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_info_confer_tl} % \begin{macrocode} \tl_new:N \g_@@_info_confer_tl \tl_gset:Nn \g_@@_info_confer_tl { \textbf { \l_@@_name_nju_tl } \hfil \g_@@_info_conferdate_tl } % \end{macrocode} % \end{variable} % % \changes{v0.16}{2022/03/06}{������������������������������������} % ������������������������������������������ \tn{ProcessKeysOptions} ������������������ % % \begin{variable}{\g_@@_info_type_tl} % ��������������������� % \begin{macrocode} \tl_new:N \g_@@_info_type_tl \tl_gset:Ne \g_@@_info_type_tl { \clist_item:Nn \c_@@_name_type_clist { \g_@@_info_type_int } } % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_info_degree_tl} % ��������������������� % \begin{macrocode} \tl_new:N \g_@@_info_degree_tl \tl_gset_eq:NN \g_@@_info_degree_tl \g_@@_info_type_tl \bool_if:NF \g_@@_opt_academic_bool { \tl_gput_right:Nn \g_@@_info_degree_tl { ������ } } % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_info_degree_en_tl} % ������������������������ % \begin{macrocode} \tl_new:N \g_@@_info_degree_en_tl \tl_gset:Ne \g_@@_info_degree_en_tl { \clist_item:Nn \c_@@_name_type_en_clist { \g_@@_info_type_int } } %</def-g> % \end{macrocode} % \end{variable} % % % \subsection{������������} % % \pkg{fontspec} ��������� \pkg{ctex} ������������������������������ % % \subsubsection{������������������} % % \begin{variable}{\c_@@_path_macoffice_tl} % mac Office ��������������� % \begin{macrocode} %<*class> \tl_const:Nn \c_@@_path_macoffice_tl { /Applications/Microsoft~ Word.app/Contents/Resources/DFonts/ } % \end{macrocode} % \end{variable} % % ������������������������������ \pkg{ctex} ��������� \cs{ctex_detect_platform:}��� % ������������������ macOS ��� MS Office ������������ % \begin{macrocode} \sys_if_platform_windows:TF { \tl_gset:Nn \g_@@_font_set_tl { win } } { \ctex_if_platform_macos:TF { \file_if_exist:nTF { \c_@@_path_macoffice_tl times.ttf } { \tl_gset:Nn \g_@@_font_set_tl { macoffice } } { \tl_gset:Nn \g_@@_font_set_tl { mac } } } { \tl_gset:Nn \g_@@_font_set_tl { fandol } } } % \end{macrocode} % ��������������������������������������������������������������������������������������� % ������������������������������������������������ % Windows ��� macOS ������������������������ Linux������������������������������ % \begin{macrocode} \tl_if_empty:NT \g_@@_font_latin_tl { \tl_gset_eq:NN \g_@@_font_latin_tl \g_@@_font_set_tl } \tl_if_empty:NT \g_@@_font_cjk_tl { \tl_gset_eq:NN \g_@@_font_cjk_tl \g_@@_font_set_tl } % \end{macrocode} % % % \subsubsection{������������������} % % ������������������������������������������������ % % \begin{macro}{\@@_loadfont_latin:n, % \@@_loadfont_latin_win:,\@@_loadfont_latin_mac:} % Windows ��� macOS ������������������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_loadfont_latin:n #1 { \__fontspec_main_setmainfont:nn { } { Times~New~Roman } \__fontspec_main_setsansfont:nn { } { Arial } \__fontspec_main_setmonofont:nn { Scale = MatchLowercase } {#1} } \cs_new_protected:Npn \@@_loadfont_latin_win: { \@@_loadfont_latin:n { Courier~New } } \cs_new_protected:Npn \@@_loadfont_latin_mac: { \@@_loadfont_latin:n { Menlo } % \end{macrocode} % \changes{v1.1}{2022/12/03}{��������� Times New Roman ��� smcp ������������������} % ������ Times New Roman ���������������������������������small caps������������ % ������ macOS ��������������������������������������� % \begin{macrocode} \fontspec_if_small_caps:F { \msg_warning:nn { njuthesis } { no-small-caps } \__fontspec_main_setmainfont:nn { \c_@@_name_gyrefeature_clist } { texgyretermes } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_latin_macoffice:} % mac Office ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_loadfont_latin_macoffice: { \__fontspec_main_setmainfont:nn { \l_@@_name_macofficefeature_clist } { times } \__fontspec_main_setsansfont:nn { \l_@@_name_macofficefeature_clist } { arial } \__fontspec_main_setmonofont:nn { Scale = MatchLowercase } { Menlo } } % \end{macrocode} % \end{macro} % % \begin{variable}{\l_@@_name_macofficefeature_clist} % ������ \pkg{fontspec} ��� mac Office ��������������������� % \begin{macrocode} \clist_const:Nn \c_@@_name_macofficefeature_clist { Path = \c_@@_path_macoffice_tl, Extension = .ttf, UprightFont = *, BoldFont = *bd, ItalicFont = *i, BoldItalicFont = *bi } % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_loadfont_latin_gyre:} % ��������� \TeX Gyre ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_loadfont_latin_gyre: { \__fontspec_main_setmainfont:nn { \c_@@_name_gyrefeature_clist } { texgyretermes } \__fontspec_main_setsansfont:nn { \c_@@_name_gyrefeature_clist } { texgyreheros } \__fontspec_main_setmonofont:nn { \c_@@_name_gyrefeature_clist, Scale = MatchLowercase, Ligatures = CommonOff } { texgyrecursor } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_latin_fandol:} % ��������� \pkg{ctex} ������������������������ % \begin{macrocode} \cs_new_eq:NN \@@_loadfont_latin_fandol: \@@_loadfont_latin_gyre: % \end{macrocode} % \end{macro} % % \begin{variable}{\c_@@_name_gyrefeature_clist} % ������ \pkg{fontspec} ��� \TeX Gyre ��������������������� % \begin{macrocode} \clist_const:Nn \c_@@_name_gyrefeature_clist { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic } % \end{macrocode} % \end{variable} % % % \subsubsection{������������������} % % \begin{macro}{\@@_hide_no_script_msg:} % ������ |does not contain script "CJK"| ��������� % \begin{macrocode} \cs_new:Npn \@@_hide_no_script_msg: { \msg_redirect_name:nnn { fontspec } { no-script } { info } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_cjk_win:N,\@@_loadfont_cjk_win:} % Windows ��������������� % \begin{macrocode} \cs_new:Npn \@@_loadfont_cjk_win:N #1 { \setCJKmainfont { SimSun } [ #1, ItalicFont = KaiTi ] \setCJKsansfont { SimHei } [#1] \setCJKmonofont { FangSong } [#1] \setCJKfamilyfont { zhsong } { SimSun } [#1] \setCJKfamilyfont { zhhei } { SimHei } [#1] \setCJKfamilyfont { zhfs } { FangSong } [#1] \setCJKfamilyfont { zhkai } { KaiTi } [#1] \@@_define_stzhongs:nn { STZhongsong } {#1} } \cs_new:Npn \@@_loadfont_cjk_win: { \@@_loadfont_cjk_win:N \c_@@_name_fakebold_tl } % \end{macrocode} % \end{macro} % % % \begin{macro}{\@@_loadfont_cjk_mac:} % macOS ��������� % ^^A TODO: ������ macOS ������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_loadfont_cjk_mac: { \@@_hide_no_script_msg: \setCJKmainfont { Songti~SC~Light } [ BoldFont = Songti~SC~Bold, ItalicFont = Kaiti~SC, BoldItalicFont = Kaiti~SC~Bold ] \setCJKsansfont { Heiti~SC~Light } [ BoldFont = Heiti~SC~Medium ] \setCJKmonofont { STFangsong } \setCJKfamilyfont { zhsong } { Songti~SC~Light } [ BoldFont = Songti~SC~Bold ] \setCJKfamilyfont { zhhei } { Heiti~SC~Light } [ BoldFont = Heiti~SC~Medium ] \setCJKfamilyfont { zhfs } { STFangsong } \setCJKfamilyfont { zhkai } { Kaiti~SC } [ BoldFont = Kaiti~SC~Bold ] } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_cjk_macoffice:n,\@@_loadfont_cjk_macoffice:} % mac Office ��������������� % \begin{macrocode} \cs_new:Npn \@@_loadfont_cjk_macoffice:n #1 { \setCJKmainfont { Simsun.ttc } [ ItalicFont = Kaiti.ttf, #1 ] \setCJKsansfont { SimHei.ttf } [#1] \setCJKmonofont { Fangsong.ttf } [#1] \setCJKfamilyfont { zhsong } { Simsun.ttc } [#1] \setCJKfamilyfont { zhhei } { SimHei.ttf } [#1] \setCJKfamilyfont { zhfs } { Fangsong.ttf } [#1] \setCJKfamilyfont { zhkai } { Kaiti.ttf } [#1] \@@_define_stzhongs:nn { STZHONGS.ttf } {#1} } \cs_new:Npn \@@_loadfont_cjk_macoffice: { \@@_loadfont_cjk_macoffice:n { Path = \c_@@_path_macoffice_tl, \c_@@_name_fakebold_tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_cjk_fandol:} % Fandol ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_loadfont_cjk_fandol: { \@@_hide_no_script_msg: \setCJKmainfont { FandolSong-Regular } [ Extension = .otf, BoldFont = FandolSong-Bold, ItalicFont = FandolKai-Regular ] \setCJKsansfont { FandolHei-Regular } [ Extension = .otf, BoldFont = FandolHei-Bold ] \setCJKmonofont { FandolFang-Regular } [ Extension = .otf ] \setCJKfamilyfont { zhsong } { FandolSong-Regular } [ Extension = .otf, BoldFont = FandolSong-Bold ] \setCJKfamilyfont { zhhei } { FandolHei-Regular } [ Extension = .otf, BoldFont = FandolHei-Bold ] \setCJKfamilyfont { zhfs } { FandolFang-Regular } [ Extension = .otf ] \setCJKfamilyfont { zhkai } { FandolKai-Regular } [ Extension = .otf, \c_@@_name_fakebold_tl ] } % \end{macrocode} % \end{macro} % % % \begin{macro}{\@@_loadfont_cjk_founder:} % ������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_loadfont_cjk_founder: { % \end{macrocode} % ��������������������������������� % \footnote{\XeTeX ��������������������� \url{https://www.zhihu.com/question/46241367/answer/101660183}���} % \begin{macrocode} \sys_if_engine_xetex:T { \xeCJKEditPunctStyle { quanjiao } { optimize-kerning = true } } \sys_if_engine_luatex:T { \defaultCJKfontfeatures { JFM = { zh_CN / { quanjiao, fzpr } } } } \setCJKmainfont { FZShuSong-Z01 } [ BoldFont = FZXiaoBiaoSong-B05, ItalicFont = FZKai-Z03 ] \setCJKsansfont { FZXiHeiI-Z08 } [ BoldFont = FZHei-B01 ] \setCJKmonofont { FZFangSong-Z02 } \setCJKfamilyfont { zhsong } { FZShuSong-Z01 } [ BoldFont = FZXiaoBiaoSong-B05 ] \setCJKfamilyfont { zhhei } { FZHei-B01 } [ \c_@@_name_fakebold_tl ] \setCJKfamilyfont { zhkai } { FZKai-Z03 } [ \c_@@_name_fakebold_tl ] \setCJKfamilyfont { zhfs } { FZFangSong-Z02 } \defaultCJKfontfeatures { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_cjk_noto:} % Noto ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_loadfont_cjk_noto: { \setCJKmainfont [ \c_@@_name_notofeature_clist ] { NotoSerifCJKsc } \setCJKsansfont [ \c_@@_name_notofeature_clist ] { NotoSansCJKsc } \setCJKmonofont { Noto~Sans~Mono~CJK~SC } \setCJKfamilyfont { zhsong } { Noto~Serif~CJK~SC } \setCJKfamilyfont { zhhei } { Noto~Sans~CJK~SC } \setCJKfamilyfont { zhfs } { FZFangSong-Z02 } \setCJKfamilyfont { zhkai } { FZKai-Z03 } [ \c_@@_name_fakebold_tl ] } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_cjk_source:} % \changes{v0.14}{2021/12/20}{������ Adobe Source Han ���������������������} % Source Han ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_loadfont_cjk_source: { \setCJKmainfont [ \c_@@_name_notofeature_clist ] { SourceHanSerifSC } \setCJKsansfont [ \c_@@_name_notofeature_clist ] { SourceHanSansSC } \setCJKmonofont { FZFangSong-Z02 } \setCJKfamilyfont { zhsong } { Source~Han~Serif~SC } \setCJKfamilyfont { zhhei } { Source~Han~Sans~SC } \setCJKfamilyfont { zhfs } { FZFangSong-Z02 } \setCJKfamilyfont { zhkai } { FZKai-Z03 } [ \c_@@_name_fakebold_tl ] } % \end{macrocode} % \end{macro} % % \begin{variable}{\c_@@_name_fakebold_tl} % \begin{macrocode} \tl_const:Nn \c_@@_name_fakebold_tl { AutoFakeBold = 2.17 } % \end{macrocode} % \end{variable} % % \begin{variable}{\c_@@_name_notofeature_clist} % ������ \pkg{fontspec} ������������������������������ % \begin{macrocode} \clist_const:Nn \c_@@_name_notofeature_clist { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold, ItalicFeatures = FakeSlant, BoldItalicFeatures = FakeSlant } % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_name_stzhongsopts_tl} % ������������������������������������������������������������������ % \begin{macrocode} \tl_new:N \l_@@_name_stzhongsopts_tl \tl_set_eq:NN \l_@@_name_stzhongsopts_tl \c_@@_name_fakebold_tl % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_define_stzhongs:nn} % \changes{v1.2}{2023/04/30}{���������������������������������������} % \changes{v1.3}{2023/10/09}{���������������������������������������������} % ��������������������������������������������� % \begin{macrocode} \cs_new:Npn \@@_define_stzhongs:nn #1#2 { \tl_set:Nn \l_@@_name_stzhongsfile_tl {#1} \tl_set:Nn \l_@@_name_stzhongsopts_tl {#2} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_stzhongs:n} % \changes{v1.2}{2023/04/30}{���������������������������������������} % \changes{v1.3}{2023/10/09}{���������������������������������������������} % \changes{v1.4}{2024/04/03}{������������������������������������������} % \begin{macro}{\@@_loadfont_stzhongs:V,\@@_loadfont_stzhongs:,\@@_stzhongs:} % ��������������������������������������������� % \begin{macrocode} \cs_new:Npn \@@_loadfont_stzhongs: { \@@_loadfont_stzhongs:V \l_@@_name_stzhongsfile_tl } \cs_new_protected:Npn \@@_loadfont_stzhongs:n #1 { \fontspec_font_if_exist:nTF {#1} { \newCJKfontfamily \@@_stzhongs: {#1} [ \l_@@_name_stzhongsopts_tl ] } { \bool_if:NTF \g_@@_font_path_bool { \newCJKfontfamily \@@_stzhongs: {#1} [ Path = \g_@@_font_path_tl, \c_@@_name_fakebold_tl ] } { \cs_set_eq:NN \@@_stzhongs: \rmfamily \msg_warning:nn { njuthesis } { missing-stzhongs } } } } \cs_generate_variant:Nn \@@_loadfont_stzhongs:n { V } % \end{macrocode} % \end{macro} % \end{macro} % % % \subsubsection{������������������} % % \begin{macro}{\@@_define_math_font:nn} % ��������������������������������� % \begin{macrocode} \cs_new:Npn \@@_define_math_font:nn #1#2 { \cs_new:cpn { @@_loadfont_math_ #1 : } { \__um_setmathfont:nn { } {#2} } } % \end{macrocode} % \end{macro} % % \begin{macro}{ % \@@_loadfont_math_asana:, % \@@_loadfont_math_fira:, % \@@_loadfont_math_garamond:, % \@@_loadfont_math_lm:, % \@@_loadfont_math_libertinus:, % \@@_loadfont_math_stix:, % \@@_loadfont_math_bonum:, % \@@_loadfont_math_dejavu:, % \@@_loadfont_math_pagella:, % \@@_loadfont_math_schola:, % \@@_loadfont_math_termes:} % ������������������������������������������������ % \begin{macrocode} \clist_map_inline:nn { { asana } { Asana-Math.otf }, { fira } { FiraMath-Regular.otf }, { garamond } { Garamond-Math.otf }, { lm } { latinmodern-math.otf }, { libertinus } { LibertinusMath-Regular.otf }, { stix } { STIXMath-Regular.otf }, { bonum } { texgyrebonum-math.otf }, { dejavu } { texgyredejavu-math.otf }, { pagella } { texgyrepagella-math.otf }, { schola } { texgyreschola-math.otf }, { termes } { texgyretermes-math.otf } } { \@@_define_math_font:nn #1 } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_math_cambria:} % Cambria Math ��������������� % \begin{macrocode} \cs_new:Npn \@@_loadfont_math_cambria: { \bool_if:NTF \g_@@_font_path_bool { \__um_setmathfont:nn { Path = \g_@@_font_path_tl/, FontIndex = 1 } { cambria.ttc } } { \__um_setmathfont:nn { } { Cambria~Math } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_math_xits:} % XITS Math ��������� % \begin{macrocode} \cs_new:Npn \@@_loadfont_math_xits: { \bool_if:NTF \g_@@_opt_math_int_bool { \tl_set:Nn \l_@@_tmpa_tl { 8 } } { \tl_clear:N \l_@@_tmpa_tl } \__um_setmathfont:nn { Extension = .otf, StylisticSet = \l_@@_tmpa_tl, BoldFont = XITSMath-Bold } { XITSMath-Regular } \__um_setmathfont:nn { Extension = .otf, StylisticSet = 1, range = {cal,bfcal} } { XITSMath-Regular } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_math_newcm:} % New Computer Modern Math ��������� % \begin{macrocode} \cs_new:Npn \@@_loadfont_math_newcm: { \bool_if:NTF \g_@@_opt_math_int_bool { \tl_set:Nn \l_@@_tmpa_tl { 2 } } { \tl_clear:N \l_@@_tmpa_tl } \__um_setmathfont:nn { Extension = .otf, StylisticSet = \l_@@_tmpa_tl } { NewCMMath-Book } \__um_setmathfont:nn { Extension = .otf, StylisticSet = 1, range = {scr,bfscr} } { NewCMMath-Book } \__fontspec_main_setmathrm:nn { Extension = .otf, UprightFont = *-Book, BoldFont = *-Bold, ItalicFont = *-BookItalic, BoldItalicFont = *-BoldItalic } { NewCM10 } \__fontspec_main_setmathsf:nn { Extension = .otf, UprightFont = *-Book, BoldFont = *-Bold, ItalicFont = *-BookOblique, BoldItalicFont = *-BoldOblique } { NewCMSans10 } \__fontspec_main_setmathtt:nn { Extension = .otf, UprightFont = *-Book, ItalicFont = *-BookItalic, BoldFont = *-Bold, BoldItalicFont = *-BoldOblique } { NewCMMono10 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_loadfont_math_none:} % ������������������������������ % \begin{macrocode} \@@_cs_clear:N \@@_loadfont_math_none: % \end{macrocode} % \end{macro} % % % \subsubsection{������������������} % \changes{v0.10}{2021/09/28}{������������������������} % % \begin{macro}{\@@_loadfont:} % ��������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_loadfont: { \use:c { @@_loadfont_latin_ \g_@@_font_latin_tl : } \use:c { @@_loadfont_cjk_ \g_@@_font_cjk_tl : } % \end{macrocode} % ������������ \pkg{ctex} ��������������������������� % \begin{macrocode} \NewDocumentCommand \songti { } { \CJKfamily { zhsong } } \NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } \NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } \NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } % \end{macrocode} % \begin{macro}{\bigger} % ������������������������ % \begin{macrocode} \NewDocumentCommand \bigger { } { \ctex_zihao:n { 4 } } } % \end{macrocode} % \end{macro} % \end{macro} % % ������������������������^^A ������������������������������������������������������ % \begin{macrocode} % \BeforeBeginEnvironment { document } { \@@_loadfont: } \@@_loadfont: %</class> % \end{macrocode} % % ������������������������������������������������������������������������������������ % \begin{macrocode} %<def-g>\ctex_at_end_preamble:n { \@@_loadfont_stzhongs: } % \end{macrocode} % % % \subsection{������������} % % \subsubsection{���������} % % ������\pkg{geometry}������������������ % \begin{macrocode} %<*class> \geometry { vmargin = 2.54 cm, hmargin = 3.18 cm, headheight = 15 pt } % \end{macrocode} % % ������������������������������������������������������������������������ % \begin{macrocode} \bool_if:NT \g_@@_opt_draft_bool { \geometry { showframe } } % \end{macrocode} % % % \subsubsection{������������} % \changes{v1.0}{2022/07/01}{������ |header/format| ��� |footer/format|���} % \changes{v1.0}{2022/08/01}{��������������������� \opt{header} ������} % \changes{v1.0}{2022/08/01}{��������������������� \opt{footer} ������} % % ��������������������������������������������� \tn{fancyhead} ��������������������� % \opt{E} ��� \opt{O} ���������������������������even������������������odd������ % ��� \opt{L}���\opt{R} ��� \opt{C} ���������������������left��������� % ���right���������������center��������������������������������������������������������� % ��������������������������������������������������������������������������������������������������������� % \begin{macrocode} \keys_define:nn { nju / header } { % \end{macrocode} % % \begin{macro}{header/content,header/content*} % \changes{v0.16}{2022/03/18}{������������������������������} % ��������������������������������������������������������� % ��������������������������������������������������� |clist| ������������������������������ % \begin{macrocode} content .clist_gset:N = \g_@@_header_twoside_clist, content* .clist_gset:N = \g_@@_header_oneside_clist, content .initial:n = { { EL } { \leftmark }, { OR } { \rightmark } }, content* .initial:n = { { L } { \leftmark }, { R } { \rightmark } } % \end{macrocode} % \end{macro} % % \begin{macrocode} } \keys_define:nn { nju / footer } { % \end{macrocode} % \begin{macro}{footer/content,footer/content*} % \changes{v0.16}{2022/03/18}{������������������������������} % ��������������������������� % \begin{macrocode} content .clist_gset:N = \g_@@_footer_twoside_clist, content* .clist_gset:N = \g_@@_footer_oneside_clist, content .initial:n = { { C } { \thepage } }, content* .initial:n = { { C } { \thepage } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\g_@@_header_clist,\g_@@_footer_clist} % ��������������������������� % \begin{macrocode} \clist_new:N \g_@@_header_clist \clist_new:N \g_@@_footer_clist % \end{macrocode} % \end{macro} % % ��������������������������������������������� % \begin{macrocode} \ctex_at_end_preamble:n { \clist_gset_eq:Nc \g_@@_header_clist { g_@@_header_ \g_@@_name_pagemode_tl _clist } \clist_gset_eq:Nc \g_@@_footer_clist { g_@@_footer_ \g_@@_name_pagemode_tl _clist } } % \end{macrocode} % % \begin{macro}{\@@_header:nn,\@@_footer:nn} % ��� \pkg{fancyhdr} ��������������������������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_header:nn #1#2 { \fancyhead [#1] { \l_@@_fmt_header_tl \nouppercase {#2} } } \cs_new_protected:Npn \@@_footer:nn #1#2 { \fancyfoot [#1] { \l_@@_fmt_footer_tl \nouppercase {#2} } } % \end{macrocode} % \end{macro} % % ��������� \pkg{fancyhdr} ��� \opt{plain} ��������������������������������������������������������� % ��������������������������������������������������������������������������������������������������� % ��������������������������������������������������� |dim| ��������������������������������������������� % \begin{macrocode} \fancypagestyle { plain } { \fancyhf { } \clist_map_inline:Nn \g_@@_footer_clist { \@@_footer:nn ##1 } \tl_set:Nn \headrulewidth { \c_zero_dim } \tl_set:Nn \footrulewidth { \c_zero_dim } } % \end{macrocode} % % \changes{v0.15}{2022/01/17}{������������������������������������} % ��� \opt{plain} ������������������ \opt{headings} ��������������������������������� % \begin{macrocode} \fancypagestyle { headings } { \fancyhf { } \clist_if_empty:NTF \g_@@_header_clist { \tl_set:Nn \headrulewidth { \c_zero_dim } } { \tl_set:Nn \headrulewidth { 0.4 pt } \dim_set:Nn \headheight { 20 pt } \clist_map_inline:Nn \g_@@_header_clist { \@@_header:nn ##1 } } \clist_map_inline:Nn \g_@@_footer_clist { \@@_footer:nn ##1 } \tl_set:Nn \footrulewidth { \c_zero_dim } } % \end{macrocode} % % \begin{macro}{\frontmatter} % ��������� \tn{frontmatter}������������������������������������������������������������ % \begin{macrocode} \RenewDocumentCommand \frontmatter { } { \cleardoublepage \exp_args:NV \pagestyle \l_@@_fmt_pagestyle_tl \pagenumbering { Roman } } % \end{macrocode} % \end{macro} % % \begin{macro}{\mainmatter} % \changes{v0.12}{2021/12/03}{���������������������������������������������������������} % \changes{v0.12}{2021/12/03}{���������������������������������������������} % ��������� \tn{mainmatter}��������������������������������������������������� % ������������������������������������������������ % \begin{macrocode} \RenewDocumentCommand \mainmatter { } { \cleardoublepage \exp_args:NV \pagestyle \l_@@_fmt_pagestyle_tl \pagenumbering { arabic } \normalfont \normalsize } % \end{macrocode} % \end{macro} % % \changes{v0.16}{2022/03/18}{������������������������������������������������������������} % ������������������������������������������������ % \begin{macrocode} \AtBeginEnvironment { document } { \exp_args:NV \pagestyle \l_@@_fmt_pagestyle_tl \pagenumbering { Roman } } % \end{macrocode} % % % \subsection{������������������} % % \begin{macro}{\@@_bookmark_toc:n,\@@_bookmark_toc:V} % ������������������������������������������������������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_bookmark_toc:n #1 { \addcontentsline { toc } { chapter } { \l_@@_fmt_chapterintoc_tl #1 } } \cs_generate_variant:Nn \@@_bookmark_toc:n { V } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_bookmark_toc:nn} % ������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_bookmark_toc:nn #1#2 { \phantomsection \_@@_bookmark_toc:n {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_bookmark_pdf_nosec:nn,\@@_bookmark_pdf:nn} % ������ \pkg{hyperref} ��� PDF ��������������� % \begin{macrocode} \cs_new:Npn \@@_bookmark_pdf_nosec:nn { \pdfbookmark [0] } \cs_new:Npn \@@_bookmark_pdf:nn { \phantomsection \@@_bookmark_pdf_nosec:nn } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_bookmark:Nnn} % ��������� % \begin{macrocode} \cs_new:Npn \@@_bookmark:Nnn #1#2#3 { \bool_if:NTF #1 { \_@@_bookmark_toc:n {#2} } { \_@@_bookmark_pdf_nosec:nn {#2} {#3} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_chapter:Nnn,\@@_chapter:cnn,\@@_chapter:n,\@@_chapter:V} % ��������������� PDF ������������������������ % \begin{macrocode} \cs_new:Npn \@@_chapter:Nnn #1#2#3 { \chapter * {#2} \@@_bookmark:Nnn #1 {#2} {#3} \@@_chapter_header:n {#2} } \cs_new:Npn \@@_chapter:n #1 { \@@_chapter:Nnn \c_true_bool {#1} { } } \cs_generate_variant:Nn \@@_chapter:Nnn { cnn } \cs_generate_variant:Nn \@@_chapter:n { V } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_chapter_header:n} % ��������������������������������������������������������������������������������������������������������������������� % ������������ \tn{leftmark} ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_chapter_header:n #1 { \bool_if:NTF \g_@@_opt_twoside_bool { \markboth {#1} {#1} } { \markboth { \hfill #1 \hfill } { } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\njuchapter} % ��������������������������������������������������������� % \begin{macrocode} \NewDocumentCommand \njuchapter { m } { \@@_chapter:n {#1} } % \end{macrocode} % \end{macro} % % |\keys_set:nn{ctex}| ��������������� \tn{ctexset}��� % \begin{macrocode} \keys_set:nn { ctex } { chapter / beforeskip = \l_@@_chapterbefore_dim, chapter / afterskip = \l_@@_chapterafter_dim, chapter / format = \l_@@_fmt_chapter_tl, section / format = \l_@@_fmt_section_tl, subsection / format = \l_@@_fmt_subsection_tl, subsubsection / format = \l_@@_fmt_subsubsection_tl, paragraph / format = \l_@@_fmt_paragraph_tl, subparagraph / format = \l_@@_fmt_subparagraph_tl, % \end{macrocode} % % % \subsection{������������} % \changes{v0.13}{2021/12/09}{������ \pkg{tocloft}������ \pkg{ctex} ���������������������} % % ��������������������������������� % \begin{macrocode} contentsname = \l_@@_name_tableofcontents_tl, listfigurename = \l_@@_name_listoffigures_tl, listtablename = \l_@@_name_listoftables_tl, % \end{macrocode} % ������������������������������������ % \begin{macrocode} chapter / tocline = \l_@@_fmt_chapterintoc_tl \CTEXnumberline {#1} #2 } % \end{macrocode} % % \changes{v1.0}{2022/08/01}{������������������������} % \begin{macro}{\@@_make_toc:nn,\@@_make_toc:Vn} % ������ group ��������������������������������������������������������������������������������� % ������������������������������������������������������������ % \url{https://tex.stackexchange.com/a/1821}��� % \begin{macrocode} \cs_new_protected:Npn \@@_make_toc:nn #1#2 { \group_begin: \keys_set:nn { ctex } { chapter/format = \l_@@_fmt_toctitle_tl } \@@_chapter:cnn { g_@@_ #2 _showentry_bool } {#1} {#2} \group_end: \@starttoc {#2} } \cs_generate_variant:Nn \@@_make_toc:nn { vn } % \end{macrocode} % \end{macro} % % \changes{v0.15}{2022/02/04}{������������������������������������������������} % \begin{macro}{\@@_define_toc_cmd:nnn} % ������������������������������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_define_toc_cmd:nnn #1#2#3 { \keys_define:nn { nju / #1 } { toc-entry .bool_gset:c = { g_@@_ #3 _showentry_bool }, toc-entry .initial:n = true } \exp_args:Nc \RenewDocumentCommand {#1} { } { \@@_make_toc:vn { #2 name } {#3} } } % \end{macrocode} % \end{macro} % % \begin{macro}{ % \tableofcontents,\listoffigures,\listoftables, % tableofcontents/toc-entry, % listoffigures/toc-entry, % listoftables/toc-entry, % \g_@@_toc_showentry_bool, % \g_@@_lof_showentry_bool, % \g_@@_lot_showentry_bool} % \begin{macrocode} \clist_map_inline:nn { { tableofcontents } { contents } { toc }, { listoffigures } { listfigure } { lof }, { listoftables } { listtable } { lot } } { \@@_define_toc_cmd:nnn #1 } % \end{macrocode} % \end{macro} % % ������������������������������������������������������������������������������������ % \begin{macrocode} \ctex_at_end_preamble:n { \bool_if:NF \g_@@_toc_showentry_bool { \bool_gset_false:N \g_@@_lof_showentry_bool \bool_gset_false:N \g_@@_lot_showentry_bool } } % \end{macrocode} % % \begin{macro}{tableofcontents/dotline} % \changes{v1.0}{2022/08/08}{������������������������������������������������������} % ������ \cls{book} ������������������������������������������ % \begin{macrocode} \keys_define:nn { nju / tableofcontents } { dotline .choice:, dotline / chapter .code:n = { \cs_set_protected_nopar:Npn \l@chapter { \skip_vertical:N 1.0 em \@plus \p@ \scan_stop: \@dottedtocline { \z@ } { \z@ } { 1.5 em } } }, dotline / section .code:n = { } } % \end{macrocode} % \end{macro} % % % \subsection{������������} % % \begin{variable}{\g_@@_blx_option_clist} % ������������ \pkg{biblatex} ������������������ % \begin{macrocode} \clist_new:N \g_@@_blx_option_clist % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_blx_resource_clist} % ������������������������������������ % \begin{macrocode} \clist_new:N \g_@@_blx_resource_clist % \end{macrocode} % \end{variable} % % \begin{macrocode} \keys_define:nn { nju / bib } { % \end{macrocode} % % \begin{macro}{bib/style} % \changes{v0.14}{2021/12/19}{������������������������������������������} % \changes{v0.15}{2022/02/11}{���������������������������������������} % ��������������������������������������������������� \opt{numeric} ���������-������������ % \opt{author-year}��������������� \pkg{biblatex} ��� \opt{gb7714-2015} % ��� \opt{gb7714-2015ay} ��������������������������������� \opt{unknown}��������� % ��������������������������������������������������������� \pkg{biblatex} ��������� % \begin{macrocode} style .choice:, style / numeric .code:n = { \clist_gput_right:Nn \g_@@_blx_option_clist { style = gb7714-2015 } }, style / author-year .code:n = { \clist_gput_right:Nn \g_@@_blx_option_clist { style = gb7714-2015ay } }, style / unknown .code:n = { \clist_gput_right:Nn \g_@@_blx_option_clist { style = #1 } }, style .initial:n = numeric, % \end{macrocode} % \end{macro} % % \begin{macro}{bib/option} % \changes{v0.15}{2022/02/15}{������������ \pkg{biblatex} ������������������������} % ��������� \pkg{biblatex} ������������������������������������������������ % ��������������������������������������������� \opt{bib/style} ��������� % ��������������������������������������������������������������������������������������������� % |\PassoptionsToPackage{|\meta{key}|=|\meta{value}|}{biblatex}| ��������� % \begin{macrocode} option .code:n = { \clist_gput_right:NV \g_@@_blx_option_clist \l_keys_value_tl }, % \end{macrocode} % \end{macro} % % \begin{macro}{bib/resource} % \changes{v0.14}{2021/12/19}{���������������������������������������������������} % ������������������������������������������������ % \begin{macrocode} resource .code:n = { \clist_gput_right:NV \g_@@_blx_resource_clist \l_keys_value_tl }, } % \end{macrocode} % \end{macro} % % \begin{macro}{\addbibresource} % ������������������������������������������������\pkg{biblatex} ������������������������������������������ % ������������������������������������������������������ \tn{addbibresource} ������������������������������ % ��������������������������������������� % \begin{macrocode} \bool_if:NT \g_@@_opt_load_blx_bool { \NewDocumentCommand \addbibresource { m } { \clist_gput_right:Nn \g_@@_blx_resource_clist {#1} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_blx_pre_setup:} % ������ \pkg{biblatex} ��������������������������������������� \tn{addbibresource} % ������������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_blx_pre_setup: { \cs_undefine:N \addbibresource \clist_gput_right:Nn \g_@@_blx_option_clist { backend = biber } \exp_args:NV \PassOptionsToPackage \g_@@_blx_option_clist { biblatex } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_blx_post_setup:} % \pkg{biblatex} ��������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_blx_post_setup: { % \end{macrocode} % \changes{v0.12}{2021/12/06}{������������������������������������������} % \changes{v0.15}{2022/02/17}{���������������������������������������} % ������������������������������������������������������������������������ |chapter| ��������� % ������������������������������������������������������������ \pkg{biblatex} ��������� % |refsection = chapter| ��������������������� |section| ��������� % \begin{macrocode} \defbibheading { njubibintoc } [ \bibname ] { \@@_chapter:n {##1} } \tl_if_eq:NnTF \blx@refsecreset@level { 2 } { \DeclarePrintbibliographyDefaults { heading = subbibintoc } } { \DeclarePrintbibliographyDefaults { heading = njubibintoc } } % \end{macrocode} % ��������������������������������������������������� \tn{addbibresource} ��������� % \begin{macrocode} \clist_map_inline:Nn \g_@@_blx_resource_clist { \addbibresource {##1} } } % \end{macrocode} % \end{macro} % % ������ \pkg{etoolbox} ��������� \tn{BeforeBeginEnvironment}������ \env{document} ������ % ������������������������ \pkg{biblatex} ������������������������ % \begin{macrocode} \bool_if:NT \g_@@_opt_load_blx_bool { \BeforeBeginEnvironment { document } { \@@_blx_pre_setup: \RequirePackage { biblatex } \@@_blx_post_setup: } } % \end{macrocode} % % % \subsection{������} % % \changes{v1.4}{2024/03/06}{������������������������ \pkg{hyperref} ������������������������������} % \begin{macrocode} \hypersetup { bookmarksnumbered = true, psdextra = true, unicode = true, hidelinks } % \end{macrocode} % \changes{v0.17}{2022/04/09}{PDF ���������������������������������} % ������ PDF ������������������������������������������ \pkg{hyperref} ��������� % \begin{macrocode} \pdfstringdefDisableCommands { \clist_map_inline:nn { \\, \quad, \qquad, \bigger } { \@@_cs_clear:N #1 } \cs_set_eq:NN \zihao \use_none:n } % \end{macrocode} % ������������������������ \pkg{hyperref} ��������������� PDF ������������ % \changes{v0.11}{2021/10/01}{������ PDF ������������} % \begin{macrocode} \ctex_at_end_preamble:n { \hypersetup { pdftitle = \g_@@_info_title_tl, pdfauthor = \g_@@_info_author_tl, pdfkeywords = \g_@@_info_keywords_clist, pdfcreator = \l_@@_name_pdfcreator_tl } } % \end{macrocode} % % \begin{macro}{\@@_cref_name:n} % ������������ \pkg{cleveref} ��������������������������������� % \begin{arguments} % \item ��������� % \end{arguments} % \begin{macrocode} \cs_new:Npn \@@_cref_name:n #1 { \crefname {#1} { \@@_name:n {#1} } { \@@_name:n {#1} } } % \end{macrocode} % \end{macro} % % ������ \pkg{cleveref} ������������������������������������������������������������������������������������ % \begin{macrocode} \bool_if:NT \g_@@_opt_load_cref_bool { \crefdefaultlabelformat { #2#1#3\, } \crefformat { equation } { ������~#2#1#3~ } \crefformat { chapter } { ���#2#1#3��� } \crefformat { section } { ���~#2#1#3~��� } \crefformat { subsection } { ���~#2#1#3~������ } \crefformat { subsubsection } { ���~#2#1#3~������ } % \end{macrocode} % ������ \pkg{cleveref} ������������������ % \begin{macrocode} \clist_map_inline:nn { figure, table, appendix } { \@@_cref_name:n {#1} } } % \end{macrocode} % % % \subsection{������} % \changes{v0.18}{2022/05/01}{������������������������} % ^^A ������ fduthesis % % \begin{variable}{\g_@@_fn_ctext_option_clist} % ������������ \pkg{circledtext} ������������������������ % ������������������������������������������������������������������������������������������������������������ % \begin{macrocode} \clist_gset:Nn \g_@@_fn_ctext_option_clist { charf = \scriptsize } % \end{macrocode} % \end{variable} % % \begin{macrocode} \keys_define:nn { nju / footnote } { % \end{macrocode} % \begin{macro}{footnote/style} % \changes{v1.1}{2022/10/16}{������ \opt{circled} ��� \opt{circled*} ���������} % ������������������������ % \begin{macrocode} style .choices:nn = { plain, pifont, circled, circled* } { \int_case:nnF { \l_keys_choice_int } { % \end{macrocode} % \opt{pifont} ������������������������������������������������ % \begin{macrocode} { 2 } { \RequirePackage { pifont } \cs_set_eq:NN \@@_fn_number:N \@@_fn_number_pifont:N } % \end{macrocode} % \opt{circled} ������������������������������������������������ \pkg{circledtext} ��������� % \begin{macrocode} { 3 } { \RequirePackage { circledtext } \cs_set:Npn \@@_fn_number:N { \@@_fn_number_circled:NV \c_false_bool } } { 4 } { \RequirePackage { circledtext } \cs_set:Npn \@@_fn_number:N { \@@_fn_number_circled:NV \c_true_bool } } } % \end{macrocode} % \opt{plain} ��������������������������������������������� % \begin{macrocode} { \cs_set_eq:NN \@@_fn_number:N \int_use:N } }, % \end{macrocode} % \end{macro} % % \begin{macro}{footnote/circledtext-option} % \changes{v1.1}{2022/10/16}{������������������������ \pkg{pifont} ��������� \pkg{circledtext}���} % \pkg{circledtext} ��������������� % \begin{macrocode} circledtext-option .code:n = { \clist_gput_right:Nn \g_@@_fn_ctext_option_clist {#1} }, % \end{macrocode} % \end{macro} % % \begin{macro}{footnote/hang} % \changes{v1.1}{2022/10/16}{���������������������������} % ��������������������� % \begin{macrocode} hang .choice:, hang / true .code:n = { \cs_set:Npn \@@_fn_hang: { \int_set:Nn \tex_hangafter:D { 1 } \dim_set_eq:NN \tex_hangindent:D \l_@@_fnhang_dim } }, hang / false .code:n = { \@@_cs_clear:N \@@_fn_hang: }, hang .initial:n = true } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_number_pifont:N} % \opt{pifont} ������������������������������ % \begin{macrocode} \cs_new:Npn \@@_fn_number_pifont:N #1 { \ding { \int_eval:n { 171 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_number_circled:Nn,\@@_fn_number_circled:NV} % \opt{circled} ������������������������������ % \begin{macrocode} \cs_generate_variant:Nn \__circledtext_handle:nn { Vn } \cs_new_protected:Npn \@@_fn_number_circled:Nn #1#2 { \group_begin: \bool_set_eq:NN \l__circledtext_negative_bool #1 \__circledtext_handle:Vn \g_@@_fn_ctext_option_clist {#2} \group_end: } \cs_generate_variant:Nn \@@_fn_number_circled:Nn { NV } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_number:N} % ������������������������������������ |footnote| ��������� % \begin{macrocode} \cs_new_eq:NN \@@_fn_number:N \int_use:N % \end{macrocode} % \end{macro} % % \begin{macro}{\thefootnote} % ������������������������ % \begin{macrocode} \bool_if:NT \g_@@_opt_load_fm_bool { \cs_set:Npn \thefootnote { \@@_fn_number:N \c@footnote } % \end{macrocode} % \end{macro} % % \subsubsection{������������} % % \begin{macro}[int]{\@makefntext} % ������������������������������������������������������������������������������ \qty{1.5}{em} % \footnote{\url{http://tex.stackexchange.com/q/19844}, % \url{https://www.zhihu.com/question/53030087}}��� % ������������������������������������������������������ \pkg{footmisc} ��������������� \opt{hang} ��������������� % \begin{macrocode} \cs_set:Npn \@makefntext #1 { \mode_leave_vertical: \hbox_to_wd:nn { \l_@@_fnhang_dim } { \@thefnmark \tex_hfil:D } \tex_penalty:D \@M \@@_fn_hang: #1 } } % \end{macrocode} % \end{macro} % % % \subsection{������������} % % \begin{macro}{image/path} % \changes{v1.0}{2022/08/06}{���������������������������} % ������������������������������ \tn{graphicspath}��� % \begin{macrocode} \keys_define:nn { nju / image } { path .code:n = { \graphicspath {#1} } } % \end{macrocode} % \end{macro} % % ��������������������������������������������������������������������������������� % \begin{macrocode} \DeclareGraphicsExtensions { .pdf, .eps, .jpg, .png } % \end{macrocode} % % \changes{v0.16}{2022/03/11}{������������������������������} % \changes{v1.0}{2022/08/06}{������ \pkg{tabularray} ���������} % \changes{v1.4}{2024/03/06}{������ \pkg{tabularray} ���������} % ���������������������������������������������^^A https://www.zhihu.com/question/366803177/answer/977853129 % \begin{macrocode} \BeforeBeginEnvironment { tabular } { \centering \l_@@_fmt_tabular_tl } \ctex_at_end_package:nn { tabularray } { % \end{macrocode} % ��������� \tn{UseTblrLibrary}���\tn{SetTblrInner} ��� \tn{SetTblrOuter}��� % \begin{macrocode} \__tblr_use_lib_booktabs: \tl_set:Nn \l_@@_tmpb_tl { , abovesep = 4 pt, stretch = 0.8, cells = { font = \l_@@_fmt_tabular_tl } } \tl_put_right:NV \l__tblr_default_tblr_inner_tl \l_@@_tmpb_tl \tl_put_right:NV \l__tblr_default_talltblr_inner_tl \l_@@_tmpb_tl \tl_put_right:NV \l__tblr_default_longtblr_inner_tl \l_@@_tmpb_tl % \end{macrocode} % ������������������������������������������������������������������ \qty{10}{pt}������������ \qty{12.63}{pt}��� % \begin{macrocode} \tl_put_right:Nn \l__tblr_default_talltblr_outer_tl { , headsep = 12.63 pt } \tl_put_right:Nn \l__tblr_default_longtblr_outer_tl { , headsep = 12.63 pt } % \end{macrocode} % ������ \env{talltblr} ������������������������ % \footnote{\url{https://github.com/lvjr/tabularray/issues/255}} % \begin{macrocode} \DefTblrTemplate { caption-tag } { default } { \l_@@_name_table_tl \hspace { 0.25em } \thetable } \DefTblrTemplate { caption-sep } { default } { \quad } \DefTblrTemplate { firsthead } { caption } { \makebox [ \tablewidth ] { \parbox { \columnwidth } { \UseTblrTemplate {caption} {normal} } } } \SetTblrTemplate { firsthead } { caption } \SetTblrStyle { caption } { font = \normalfont \bfseries \small } \SetTblrStyle { note } { font = \normalfont \footnotesize } \SetTblrStyle { remark } { font = \normalfont \footnotesize } } % \end{macrocode} % % \changes{v0.12}{2021/12/06}{������������������������������ \pkg{floatrow}���} % \changes{v0.18}{2022/05/08}{���������������������������} % ������������������������������������������������������������������������������������������������������ % \begin{macrocode} \DeclareCaptionStyle{njucap} { font = {small, bf}, labelsep = quad, justification = centering } \captionsetup [ figure ] { style = njucap } \captionsetup [ table ] { style = njucap } % \end{macrocode} % % \begin{macro}{\ctex_patch_cmd:Nnn} % \begin{macrocode} \cs_generate_variant:Nn \ctex_patch_cmd:Nnn { cnv } % \end{macrocode} % \end{macro} % % \begin{macro}{label-sep/figure,label-sep/table,label-sep/equation} % \changes{v1.0}{2022/07/31}{���������������������������������} % ������������������������������������������������������ % \footnote{\url{https://tex.stackexchange.com/q/61756/}} % \begin{macrocode} \clist_map_inline:nn { figure, table, equation } { \keys_define:nn { nju / label-sep } { #1 .tl_gset:c = { g_@@_sep_ #1 _tl }, % \end{macrocode} % ���������������������������������������������������������������������en dash������ % \begin{macrocode} #1 .initial:n = { - } } \@@_at_begin_document:n { \ctex_patch_cmd:cnv { the #1 } {.} { g_@@_sep_ #1 _tl } } } % \end{macrocode} % \end{macro} % % % \subsection{������������} % \changes{v0.12}{2021/12/07}{��������� \pkg{enumitem} ������������������������������} % % ������������������������������������ % \begin{macrocode} \bool_if:NT \g_@@_opt_load_enit_bool { \setlist { noitemsep } } % \end{macrocode} % % % \subsection{������������} % \changes{v0.18}{2022/04/21}{���������������������������������������} % % \begin{macro}{\c_@@_name_qed_tl} % ������������������ \tn{mdlgwhtsquare} ������������������ |U+25A1| ��������� % \footnote{\url{https://tex.stackexchange.com/q/567135/}} % ������ \pkg{unicode-math} ������������������������������������������ % \begin{macrocode} \bool_if:NTF \g_@@_opt_load_um_bool { \tl_const:Nn \c_@@_name_qed_tl { \ensuremath { \mdlgwhtsquare } } } { \tl_const:Nn \c_@@_name_qed_tl { \ensuremath { \rule {1ex} {1ex} } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\l_@@_thm_share_tl} % ��������������������������������� % \begin{macrocode} \tl_new:N \l_@@_thm_share_tl % \end{macrocode} % \end{macro} % % \begin{macrocode} \keys_define:nn { nju / theorem } { % \end{macrocode} % \begin{macro}{theorem/style,theorem/header-font,theorem/body-font, % theorem/qed-symbol,theorem/counter} % ������ |nju/theorem| ������������^^A ��������������������������� xtemplate��� % ������������������������������������������������������������������������ % \begin{macrocode} style .tl_set:N = \l_@@_thm_style_tl, header-font .tl_set:N = \l_@@_thm_header_font_tl, body-font .tl_set:N = \l_@@_thm_body_font_tl, qed-symbol .tl_set:N = \l_@@_thm_qed_symbol_tl, counter .tl_set:N = \l_@@_thm_counter_tl, % \end{macrocode} % ��������������������������� % \begin{macrocode} style .initial:n = plain, header-font .initial:n = \normalfont \bfseries, body-font .initial:n = \itshape, qed-symbol .initial:V = \c_@@_name_qed_tl, counter .initial:n = chapter, % \end{macrocode} % \end{macro} % % \begin{macro}{theorem/type} % ������������������������ % \begin{macrocode} type .clist_gset:N = \g_@@_thm_type_clist, type .initial:n = { { axiom } { ������ }, { corollary } { ������ }, { definition } { ������ }, { example } { ��� }, { lemma } { ������ }, { proof, *+ } { ������ }, { theorem } { ������ } }, % \end{macrocode} % \end{macro} % % \begin{macro}{theorem/share-counter} % \changes{v1.3}{2023/05/07}{������������������������������������������������������} % ������������������������������������������ % \begin{macrocode} share-counter .bool_set:N = \l_@@_thm_share_bool, share-counter .initial:n = false, % \end{macrocode} % \end{macro} % % \begin{macro}{theorem/define} % ������������������������ % \begin{macrocode} define .value_forbidden:n = true, define .code:n = { \clist_if_empty:NT \g_@@_thm_type_clist { \msg_error:nn { njuthesis } { empty-theorem-type } } \tl_clear:N \l_@@_thm_share_tl \clist_map_inline:Nn \g_@@_thm_type_clist { \@@_thm_define:Nnn \l_@@_thm_share_tl ##1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_thm_define:Nnn} % ��������������������� % \begin{arguments} % \item ���������������������������|tl| ��������� % \item ���������������������������|clist| ��������� % \item ��������������� % \end{arguments} % \begin{macrocode} \cs_new:Npn \@@_thm_define:Nnn { \@@_thm_define:NNNNnn \l_@@_tmp_clist \l_@@_tmpa_tl \l_@@_tmpb_tl } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_thm_define:NNNNnn} % \begin{macrocode} \cs_new:Npn \@@_thm_define:NNNNnn #1#2#3#4#5#6 { \bool_if:NF \g_@@_opt_load_nthm_bool { \msg_error:nn { njuthesis } { missing-ntheorem } } \exp_args:NV \theoremstyle \l_@@_thm_style_tl \exp_args:NV \theoremheaderfont \l_@@_thm_header_font_tl \exp_args:NV \theorembodyfont \l_@@_thm_body_font_tl % \end{macrocode} % ��������������������������������������������������������������������������������������������� % ��������� \env{proof} ������������������������������������������ % \begin{macrocode} \clist_set:Nn #1 {#5} \clist_pop:NN #1 #2 \clist_pop:NN #1 #3 % \end{macrocode} % ������������������������������������������ % \begin{macrocode} \tl_if_in:NnT #3 { + } { \exp_args:NV \theoremsymbol \l_@@_thm_qed_symbol_tl } \tl_if_in:NnTF #3 { * } { \@@_thm_new:VVVn #2 \c_novalue_tl #4 {#6} } { \@@_thm_new:VVVn #2 \l_@@_thm_counter_tl #4 {#6} } % \end{macrocode} % ��������������������������� % \begin{macrocode} \bool_if:NT \l_@@_thm_share_bool { \tl_gset_eq:NN #4 #2 \bool_gset_false:N \l_@@_thm_share_bool } % \end{macrocode} % ������ \pkg{cleveref} ������������ % \begin{macrocode} \bool_if:NT \g_@@_opt_load_cref_bool { \exp_args:NV \crefname #2 {#6} {#6} } % \end{macrocode} % ������������������������������ % \begin{macrocode} \theoremsymbol { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_thm_new:nnnn,\@@_thm_new:VVVn} % ������ \tn{newtheorem} ������������������������������������ \file{interface3.pdf} % ������ 5.3 ������������������������������������������������ |V| ��������������������������������� % \begin{arguments} % \item ��������� % \item ������������ % \item ��������� % \end{arguments} % ��������������������������������������������������������������������������� % ��������������������������������������������������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_thm_new:nnnn #1#2#3#4 { \group_begin: \cs_if_exist:cT { end #1 } { \cs_set_eq:NN \newtheorem \renewtheorem } \tl_if_novalue:nTF {#2} { \newtheorem * {#1} {#4} } { \tl_if_empty:nTF {#3} { \newtheorem {#1} {#4} [#2] } { \newtheorem {#1} [#3] {#4} } } \group_end: } \cs_generate_variant:Nn \@@_thm_new:nnnn { VVVn } % \end{macrocode} % \end{macro} % % % \subsection{������������} % \changes{v1.0}{2022/07/31}{���������������������������������} % % \begin{variable}{ % \g_@@_opt_math_re_bool, % \g_@@_opt_math_int_bool, % \g_@@_opt_math_leq_bool, % \g_@@_opt_math_vec_bool} % ��������������������������� |bool| ��������� % \begin{macrocode} \bool_new:N \g_@@_opt_math_re_bool \bool_new:N \g_@@_opt_math_int_bool \bool_new:N \g_@@_opt_math_leq_bool \bool_new:N \g_@@_opt_math_vec_bool % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_name_integral_tl} % ������ \pkg{unicode-math} ��������������������������������� % \begin{macrocode} \bool_if:NTF \g_@@_opt_load_um_bool { \tl_set_eq:NN \l_@@_name_integral_tl \l__um_nolimits_tl } { \tl_set_eq:NN \l_@@_name_integral_tl \c_empty_tl } % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_um_setup:n} % ������ \tn{unimathsetup}��� % \begin{macrocode} \bool_if:NTF \g_@@_opt_load_um_bool { \cs_new:Npn \@@_um_setup:n #1 { \keys_set:nn { unicode-math } {#1} } } { \cs_new_eq:NN \@@_um_setup:n \use_none:n } % \end{macrocode} % \end{macro} % % ^^A ������������������ thuthesis % \begin{macrocode} \keys_define:nn { nju / math } { % \end{macrocode} % \begin{macro}{math/integral} % ������������������������������������ % \begin{macrocode} integral .choice:, integral / upright .code:n = { \bool_gset_true:N \g_@@_opt_math_int_bool }, integral / slanted .code:n = { \bool_gset_false:N \g_@@_opt_math_int_bool }, % \end{macrocode} % \end{macro} % % \begin{macro}{math/integral-limits} % ������������������������������������������������������ % ��������������������������� \tn{removenolimits} ��� \tn{addnolimits}��� % \begin{macrocode} integral-limits .choice:, integral-limits / true .code:n = { \tl_clear:N \l__um_nolimits_tl }, integral-limits / false .code:n = { \tl_set_eq:NN \l__um_nolimits_tl \l_@@_name_integral_tl }, % \end{macrocode} % \end{macro} % % \begin{macro}{math/less-than-or-equal} % ��������������������������������������������������������������������� % \begin{macrocode} less-than-or-equal .choice:, less-than-or-equal / slanted .code:n = { \bool_gset_true:N \g_@@_opt_math_leq_bool }, less-than-or-equal / horizontal .code:n = { \bool_gset_false:N \g_@@_opt_math_leq_bool }, % \end{macrocode} % \end{macro} % % \begin{macro}{math/math-ellipsis} % ��������������������������������������� % \begin{macrocode} math-ellipsis .choice:, math-ellipsis / centered .code:n = { \DeclareRobustCommand \mathellipsis { \mathinner { \unicodecdots } } }, math-ellipsis / lower .code:n = { \DeclareRobustCommand \mathellipsis { \mathinner { \unicodeellipsis } } }, % \end{macrocode} % \end{macro} % % \begin{macro}{math/partial} % ��������������������������������������� % \begin{macrocode} partial .choices:nn = { upright, italic } { \@@_um_setup:n { partial = #1 } }, % \end{macrocode} % \end{macro} % % \begin{macro}{math/real-part} % ������������������������������������������������������ % \begin{macrocode} real-part .choice:, real-part / roman .code:n = { \bool_set_true:N \g_@@_opt_math_re_bool }, real-part / fraktur .code:n = { \bool_set_false:N \g_@@_opt_math_re_bool }, % \end{macrocode} % \end{macro} % % \begin{macro}{math/vector} % ������������������������������������������ % \begin{macrocode} vector .choice:, vector / boldfont .code:n = { \bool_gset_true:N \g_@@_opt_math_vec_bool }, vector / arrow .code:n = { \bool_gset_false:N \g_@@_opt_math_vec_bool }, % \end{macrocode} % \end{macro} % % \begin{macro}{math/uppercase-greek} % ������������������������������������������������ % \begin{macrocode} uppercase-greek .choice:, uppercase-greek / upright .code:n = { \@@_um_setup:n { math-style = ISO } }, uppercase-greek / italic .code:n = { \@@_um_setup:n { math-style = TeX } }, % \end{macrocode} % \end{macro} % % \begin{macro}{math/style} % ��������������� % \begin{macrocode} style .choice:, style / TeX .code:n = { \keys_set:nn { nju / math } { integral = slanted, integral-limits = false, less-than-or-equal = horizontal, math-ellipsis = centered, partial = italic, real-part = fraktur, vector = arrow, uppercase-greek = upright } \@@_um_setup:n { bold-style = TeX } }, style / ISO .code:n = { \keys_set:nn { nju / math } { integral = upright, integral-limits = true, less-than-or-equal = horizontal, math-ellipsis = lower, partial = upright, real-part = roman, vector = arrow, uppercase-greek = italic } \@@_um_setup:n { bold-style = ISO } }, style / GB .code:n = { \keys_set:nn { nju / math } { integral = upright, integral-limits = false, less-than-or-equal = slanted, math-ellipsis = centered, partial = upright, real-part = roman, vector = boldfont, uppercase-greek = italic } \@@_um_setup:n { bold-style = ISO } }, style .initial:n = GB } % \end{macrocode} % \end{macro} % % \changes{v1.3}{2023/05/22}{������ \pkg{unicode-math} ���������������������������} % ��� |\begin{document}| ������������������������ \pkg{mathtools}��� % ������������������������������������������������������ % \begin{macrocode} \bool_if:NT \g_@@_opt_load_um_bool { \@@_at_begin_document:n { \use:c { @@_loadfont_math_ \g_@@_font_math_tl : } \bool_if:NT \g_@@_opt_math_leq_bool { \cs_set_eq:NN \le \leqslant \cs_set_eq:NN \ge \geqslant \cs_set_eq:NN \leq \leqslant \cs_set_eq:NN \geq \geqslant } \bool_if:NT \g_@@_opt_math_re_bool { \cs_set:Npn \Re { \operatorname { Re } } \cs_set:Npn \Im { \operatorname { Im } } } \bool_if:NT \g_@@_opt_math_vec_bool { \cs_set_eq:NN \vec \symbf } } } %</class> % \end{macrocode} % % % \subsection{������} % % \subsubsection{������������} % \changes{v0.16}{2022/03/01}{������������������������ \file{.def} ���������} % % \paragraph{���������} % % \subparagraph{������} % % \begin{macro}{u/cover/emblem-img} % \changes{v1.1}{2023/01/15}{������������������������������������} % \changes{v1.2}{2023/05/02}{���������������������������������������������} % ������������������������������������ % \begin{macrocode} %<*def-u> \@@_declare_element:nn { u / cover / emblem-img } { content = \@@_emblem:N \l_@@_emblemwd_dim, bottom-skip = 1.2 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{u/cover/name-img} % ������������������������������������ % \begin{macrocode} \@@_declare_element:nn { u / cover / name-img } { content = \@@_name:N \l_@@_namewd_dim, bottom-skip = 1 cm, } % \end{macrocode} % \end{macro} % % \begin{macro}{u/cover/title} % ������������������������������ % \begin{macrocode} \@@_declare_element:nn { u / cover / title } { content = \@@_name:n { type }, format = \zihao { 1 } \bfseries \@@_set_ccglue:n { .5 em }, bottom-skip = 0 cm plus 1 fill } % \end{macrocode} % \end{macro} % % \begin{macro}{u/cover/info} % \changes{v1.3}{2023/05/25}{��������������������������������� v1.1 ������������������} % ��������������������������������� % \begin{macrocode} \@@_declare_element:nn { u / cover / info } { content = \@@_u_cover_info:, format = \zihao { 3 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_u_cover_info:NNNN} % ��������������������������� % \begin{arguments} % \item ���������������������|dim| ��������� % \item ������������������������|dim| ��������� % \item ���������������|dim| ��������� % \item ������������ % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_u_cover_info:NNNN #1#2#3#4 { \@@_cover_entry:NNNn #1 #2 #4 { dept } \@@_cover_entry:NNNn #1 #2 #4 { major } \@@_cover_entry_title:NNN #1 #2 #4 % \end{macrocode} % ������������������������������������������������������|dim| ������������������������������ % \cs{dim_ratio:nn} ������������������ % \begin{macrocode} \dim_set:Nn \l_@@_tmpb_dim { #2 * 1/2 - #1 * 1/2 - #3 } \@@_cover_entry:NNNnn #1 \l_@@_tmpb_dim #4 { grade } { id } \@@_cover_entry:NNNn #1 #2 #4 { author } \@@_cover_entry_supv:NNNn #1 \l_@@_tmpb_dim #4 { supv } \bool_if:NT \g_@@_opt_supvii_bool { \@@_cover_entry_supv:NNNn #1 \l_@@_tmpb_dim #4 { supvii } } \@@_cover_entry:NNNn #1 #2 #4 { submitdate } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_u_cover_info:} % \begin{macrocode} \cs_new:Npn \@@_u_cover_info: { \@@_u_cover_info:NNNN \l_@@_clabelwd_dim \l_@@_crulewd_dim \l_@@_hsep_dim \kaishu } % \end{macrocode} % \end{macro} % % \subparagraph{���������������} % \changes{v1.2}{2023/05/02}{���������������������������������������} % % \begin{macro}{u/decl/orig/emblem} % ��������������������������������������� % \begin{macrocode} \@@_declare_element:nn { u / decl / orig / emblem } { content = \@@_emblem:N \l_@@_emblemwdi_dim, bottom-skip = 30 pt } % \end{macrocode} % \end{macro} % % \begin{macro}{u/decl/orig/title} % ��������������������������������������� % Word ������������������������������ \qty{36}{bp}��������������������� 1.625 ��� \tn{linespread}��� % \begin{macrocode} \@@_declare_element:nn { u / decl / orig / title } { content = \l_@@_name_origdecl_tl, format = \sffamily \@@_fontsize:nn { 24 bp } { 22.15 bp } \bfseries, bottom-skip = 50 pt } % \end{macrocode} % \end{macro} % % \begin{macro}{u/decl/orig/text} % ��������������������������������������� % \begin{macrocode} \@@_declare_element:nn { u / decl / orig / text } { content = \l_@@_text_origdecl_tl, format = \@@_zihao:nn { 1.9 } { -3 }, align = n, bottom-skip = 2.7 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{u/decl/orig/sign} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { u / decl / orig / sign } { content = \@@_decl_sign:, format = \zihao { -3 } \sffamily, align = r } %</def-u> % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_decl_sign:} % ������������������������������ % \begin{macrocode} %<*(def-u|def-g)> \cs_new_protected:Npn \@@_decl_sign: { %<def-u> \clist_map_inline:nn { origsign, id, date } %<def-g> \clist_map_inline:nn { origsign, date } { \tex_par:D \@@_name:n {##1} ��� \hbox_to_wd:nn { 6 em } { } } } %</(def-u|def-g)> % \end{macrocode} % \end{macro} % % \paragraph{���������} % \changes{v1.0}{2022/06/30}{������������������������������} % \changes{v1.2}{2023/05/01}{������2023���������������������������������������������} % % \subparagraph{������} ��������������������������������������������� % % \begin{macro}{g/cover-front/top} % ������������������������������������ % ������������������������������ |linespread=1.625|��������������������������������������� $1.3/1.2$��� % \begin{macrocode} %<*def-g> \@@_declare_element:nn { g / cover-front / top } { content = \skip_vertical:n { -9 bp } \skip_horizontal:n { -.5 cm } \vbox:n { \@@_g_cover_top: }, format = \normalfont \@@_zihao:nn { 1.083 } { -5 }, bottom-skip = 20 pt, align = l } % \end{macrocode} % \end{macro} % % \begin{macro}{g/cover-front/emblem-img} % ������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-front / emblem-img } { content = \@@_emblem:N \l_@@_emblemwd_dim, bottom-skip = .47 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{g/cover-front/name-img} % ������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-front / name-img } { content = \@@_name:N \l_@@_namewd_dim, bottom-skip = 2.25 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{g/cover-front/type} % ������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-front / type } { content = \@@_info:n { type } \@@_name:n { type }, format = \@@_fontsize:nn { 28 bp } { 28 bp } \@@_stzhongs: \bfseries \@@_set_ccglue:n { .5 em }, bottom-skip = 20 pt plus 1 fill } % \end{macrocode} % \end{macro} % % \begin{macro}{g/cover-front/info} % ������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-front / info } { content = \@@_g_cover_info:, bottom-skip = 20 pt plus 1 fill } % \end{macrocode} % \end{macro} % % \begin{macro}{g/cover-front/date} % ��������������������������� % \begin{macrocode} \@@_declare_element:nn { g / cover-front / date } { content = \g_@@_info_submitdate_tl, bottom-skip = 2.2 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_g_cover_top:} % \changes{v1.2}{2023/05/03}{������������������������������������������������������������������} % ��������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_g_cover_top: { \dim_set:Nn \l_@@_tmpa_dim { 4 em } \@@_get_width:NV \l_@@_tmpb_dim \g_@@_info_id_tl \clist_map_inline:nn { code, clc, secretlv, udc, id } { \@@_cover_entry:NNNNn \l_@@_name_colon_tl \l_@@_tmpa_dim \l_@@_tmpb_dim \tex_relax:D {##1} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_g_cover_info:NNNNN} % ��������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_g_cover_info:NNNNN #1#2#3#4#5 { \bool_if:NTF \g_@@_opt_academic_bool { \clist_set:Nn #1 { author, major, field, supvfull } } { \clist_set:Nn #1 { author, majorc, field, supvfull } } \@@_cover_entry_title:NNNN #2 #3 #4 #5 \clist_map_inline:Nn #1 { \@@_cover_entry:NNNNn #2 #3 #4 #5 {##1} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_g_cover_info:} % \begin{macrocode} \cs_new:Npn \@@_g_cover_info: { \tl_set:Nn \l_@@_tmpa_tl { \skip_horizontal:n { .7 cm } } \@@_g_cover_info:NNNNN \l_@@_tmp_clist \l_@@_tmpa_tl \l_@@_clabelwd_dim \l_@@_crulewd_dim \l_@@_fmt_coverlabel_tl } % \end{macrocode} % \end{macro} % % \subparagraph{������} % % \begin{macro}{g/cover-back/info} % ������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-back / info } { content = \@@_g_cover_back:, bottom-skip = 8.1 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{g/cover-back/sign} % ������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-back / sign } { content = \@@_g_cover_sign:, align = l } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_back_g:NNN,\@@_cover_back_g:} % ������������������������������ % \begin{arguments} % \item ���������������������|dim| ��������� % \item ���������������������|dim| ��������� % \item ������������ % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_g_cover_back:NNN #1#2#3 { \@@_cover_entry:NNNNn \c_empty_tl #1 #2 #3 { chairman } \tex_par:D \@@_box_spread_name:NNn #1 #3 { reviewer } \parbox [ t ] {#2} { \@@_box_multiline:NNn \g_@@_info_reviewer_clist #2 { 5 } \dim_gset_eq:NN \l_@@_tmpa_dim \tex_prevdepth:D } \tex_par:D \dim_set_eq:NN \tex_prevdepth:D \l_@@_tmpa_dim \@@_box_spread_name:NNn #1 #3 { defend date } \@@_box_center:Nn #2 { \@@_info:n { defend date } } } \cs_new:Npn \@@_g_cover_back: { \@@_g_cover_back:NNN \l_@@_clabelwdi_dim \l_@@_crulewdi_dim \l_@@_fmt_coverlabel_tl } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_sign_g:NNN,\@@_cover_sign_g:} % ������������������������������ % \begin{arguments} % \item ���������������������|dim| ��������� % \item ������������ % \item ��������� % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_g_cover_sign:NNN #1#2#3 { \@@_box_spread_name:NNn #1 #2 { sign a } #3 \tex_par:D \@@_box_spread_name:NNn #1 #2 { sign b } #3 } \cs_new:Npn \@@_g_cover_sign: { \@@_g_cover_sign:NNN \l_@@_clabelwdii_dim \l_@@_fmt_coverlabel_tl \l_@@_name_colon_tl } % \end{macrocode} % \end{macro} % % \subparagraph{������������} ��������������������������������������������������� % \changes{v1.3}{2023/08/21}{������������������������������������������������������} % % \begin{macro}{g/cover-en/title} % ������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-en / title } { content = \g_@@_info_title_en_tl, format = \bf \sffamily \zihao { 2 }, bottom-skip = 1 cm plus 1 fil minus .5 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{g/cover-en/top} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-en / top } { content = { by } \skip_vertical:N \c_zero_skip \textbf { \sffamily \g_@@_info_author_en_tl } \skip_vertical:n { .5 cm minus .5 cm } { Supervised~ by } \skip_vertical:N \c_zero_skip \textsf { \g_@@_info_supv_en_tl \tex_par:D \g_@@_info_supvii_en_tl }, format = \zihao { 4 }, bottom-skip = 1 cm plus 1 fil minus .5 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{g/cover-en/middle} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-en / middle } { content = \l_@@_text_cover_en_tl \@@_vskip: \group_begin: \scshape \g_@@_info_degree_en_tl \group_end: \@@_vskip: { in } \@@_vskip: \g_@@_info_major_en_tl, bottom-skip = .5 cm plus 1 fil } % \end{macrocode} % \end{macro} % % \begin{macro}{g/cover-en/emblem-img} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-en / emblem-img } { content = \@@_emblem:N \l_@@_emblemwdii_dim, bottom-skip = 1 cm minus .5 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{g/cover-en/bottom} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / cover-en / bottom } { content = \g_@@_info_dept_en_tl \skip_vertical:N \c_zero_skip \l_@@_name_nju_en_tl \skip_vertical:n { 1 cm } \g_@@_info_submitdate_en_tl } % \end{macrocode} % \end{macro} % % \subparagraph{���������������������} ������������������������������������������������������������ % % \begin{macro}{cover-nl/top} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { cover-nl / top } { content = \@@_cover_top_nl:, bottom-skip = 2 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{cover-nl/name} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { cover-nl / name } { content = \dim_set:Nn \l_@@_tmpa_dim { 6 em } \@@_box_spread_name:Nn \l_@@_tmpa_dim { titleb }, format = \zihao { -0 }, bottom-skip = 0 pt plus 1 fil } % \end{macrocode} % \end{macro} % % \begin{macro}{cover-nl/title} % ������������������������������������ % \begin{macrocode} \@@_declare_element:nn { cover-nl / title } { content = \@@_cover_title_nl:, format = \zihao { 1 }, bottom-skip = 0 pt plus 1 fil } % \end{macrocode} % \end{macro} % % \begin{macro}{cover-nl/middle} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { cover-nl / middle } { content = \@@_cover_info_nl:, format = \zihao { 4 }, bottom-skip = 0 pt plus 1.2 fil } % \end{macrocode} % \end{macro} % % \begin{macro}{cover-nl/bottom} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { cover-nl / bottom } { content = \@@_cover_bottom_nl:, bottom-skip = 1 cm, align = r } % \end{macrocode} % \end{macro} % % \begin{macro}{cover-nl/date} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { cover-nl / date } { content = \g_@@_info_bottomdate_tl, format = \kaishu \zihao { 3 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_top_nl:,\@@_cover_top_nl:NN} % ������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_cover_top_nl: { \@@_cover_top_nl:NN \l_@@_tmpa_dim \l_@@_tmpb_dim } \cs_new_protected:Npn \@@_cover_top_nl:NN #1#2 { \dim_set:Nn #1 { 38.6 pt } \dim_set:Nn #2 { 109 pt } \@@_box_spread_name:Nn #1 { clc } \@@_hskip: \@@_box_ulined_info:Nn #2 { clc } \tex_hfill:D \@@_box_spread_name:Nn #1 { secretlv } \@@_hskip: \@@_box_ulined_info:Nn #2 { secretlv } \tex_par:D \@@_box_spread_name:Nn #1 { udc } \@@_hskip: \@@_box_ulined_info:Nn #2 { udc } \tex_hfill:D \@@_null: } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_title_nl:} % ������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_cover_title_nl: { \parbox [ b ] { 15 em } { \@@_uline_title: } \tex_par:D \skip_vertical:n { - 0.5 cm } { \zihao { 4 } \l_@@_name_subtitle_tl } \skip_vertical:N \c_zero_skip \dim_set:Nn \l_@@_tmpa_dim { 4.5 em } \@@_box_ulined_info:Nn \l_@@_tmpa_dim { author } \skip_vertical:n { - 0.5 cm } { \zihao { 4 } { ( } \l_@@_name_author_tl { ) } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_info_nl:} % \changes{v0.17}{2022/04/09}{���������������������������������������������������������������} % \changes{v0.19}{2022/05/23}{������������������������������������������������������������} % ��������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_cover_info_nl: { \tl_set:Ne \l_@@_tmpa_tl { \clist_use:Nn \g_@@_info_supv_clist { ~ } \clist_use:Nn \g_@@_info_supvii_clist { ~ } \@@_hskip: \g_@@_info_supvcont_tl } \skip_set:Nn \l_@@_tmp_skip { .5 em plus 1 fill } \@@_uline_list:NNn \l_@@_tmpa_tl \l_@@_tmp_skip { \l_@@_name_supvinfo_tl } % \end{macrocode} % ������������������������������������ % \begin{macrocode} \group_begin: \tl_set_eq:NN \l_@@_name_major_tl \l_@@_name_majorb_tl \@@_uline_bientry:Nn \l_@@_tmpa_dim { degree } \@@_uline_bientry:Nn \l_@@_tmpa_dim { major } \tex_par:D \group_end: \@@_uline_bientry:Nn \l_@@_tmpa_dim { submitdate } \@@_uline_bientry:Nn \l_@@_tmpa_dim { defenddate } \tex_par:D \@@_uline_entry:Nn \l_@@_tmpa_dim { confer } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_bottom_nl:} % \changes{v0.19}{2022/05/20}{������������������������������������������������������������������������} % \changes{v0.20}{2022/05/27}{������������������������������������} % ������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_cover_bottom_nl: { \dim_set:Nn \l_@@_tmpa_dim { 9 em } \@@_name:n { chairman } \@@_name:n { colon } \@@_hskip: \@@_box_ulined_info:Nn \l_@@_tmpa_dim { chairman } \tex_par:D \@@_name:n { reviewer } \@@_name:n { colon } \@@_hskip: \@@_box_multiline:NNn \g_@@_info_reviewer_clist \l_@@_tmpa_dim { 4 } } % \end{macrocode} % \end{macro} % % \subparagraph{���������������} % % \begin{macro}{g/decl/orig/title} % ��������������������������������������� % \begin{macrocode} \@@_declare_element:nn { g / decl / orig / title } { content = \l_@@_name_origdecl_tl, format = \l_@@_fmt_chapter_tl, bottom-skip = \l_@@_chapterafter_dim } % \end{macrocode} % \end{macro} % % \begin{macro}{g/decl/orig/text} % ��������������������������������������� % \begin{macrocode} \@@_declare_element:nn { g / decl / orig / text } { content = \l_@@_text_origdecl_tl, align = n, bottom-skip = 0 pt plus 1 fil } % \end{macrocode} % \end{macro} % % \begin{macro}{g/decl/orig/sign} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / decl / orig / sign } { content = \@@_decl_sign:, align = r } % \end{macrocode} % \end{macro} % % \subparagraph{���������������} % % \begin{macro}{g/decl/auth/title} % ��������������������������������������� % \begin{macrocode} \@@_declare_element:nn { g / decl / auth / title } { content = \l_@@_name_authdecl_tl, format = \l_@@_fmt_chapter_tl, bottom-skip = \l_@@_chapterafter_dim } % \end{macrocode} % \end{macro} % % \begin{macro}{g/decl/auth/text} % ��������������������������������������� % \begin{macrocode} \@@_declare_element:nn { g / decl / auth / text } { content = \l_@@_text_authdecl_tl, align = n, bottom-skip = 2 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{g/decl/auth/sign} % ������������������������������������������ % \begin{macrocode} \@@_declare_element:nn { g / decl / auth / sign } { content = \@@_g_decl_auth_sign:, align = r, bottom-skip = 0 pt plus 1 fill } % \end{macrocode} % \end{macro} % % \begin{macro}{g/decl/auth/info} % ��������������������������������������������� % \begin{macrocode} \@@_declare_element:nn { g / decl / auth / info } { content = \@@_g_decl_auth_info:, format = \zihao { 5 } , align = l, bottom-skip = 2 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{g/decl/auth/date} % ��������������������������������������������� % \begin{macrocode} \@@_declare_element:nn { g / decl / auth / date } { content = \@@_g_decl_auth_secretlv:, format = \zihao { 5 } , align = l } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_degree_checkbox:nn} % \changes{v1.3}{2023/06/04}{������������������������������������������������} % ������������������������������������������������ |U+2713|��� % \begin{macrocode} \cs_new_protected:Npn \@@_degree_checkbox:nn #1#2 { \bool_lazy_and:nnTF { #1 \g_@@_opt_academic_bool } { \int_compare_p:n { \g_@@_info_type_int = #2 } } { \makebox [ 0 pt ] [l] { \ensuremath { \mdwhtsquare } } \hspace { 0.1 em } \ensuremath { \checkmark } } { \ensuremath { \mdwhtsquare } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_g_decl_auth_info:} % ������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_g_decl_auth_info: { \begin{tblr} { hlines, vlines, hspan=minimal, cells = { font = \normalsize }, colspec = { c X[c] c X[c] c X[c] }, cell{1}{2} = {c=5}{m}, cell{3}{2} = {c=5}{m}, cell{4}{2} = {c=5}{m}, cell{5}{2} = {c=5}{m} } \l_@@_name_titlec_tl & \g_@@_info_title_tl \\ \l_@@_name_ida_tl & \g_@@_info_id_tl & \l_@@_name_depta_tl & \g_@@_info_dept_tl & \l_@@_name_year_tl & \tl_range:Nnn \g_@@_info_submitdate_tl {1} {4} \\ \l_@@_name_degreea_tl & { \@@_degree_checkbox:nn { } { 2 } ������������������ \qquad \@@_degree_checkbox:nn { ! } { 2 } ������������������ \\ \@@_degree_checkbox:nn { } { 3 } ������������������ \qquad \@@_degree_checkbox:nn { ! } { 3 } ������������������ } \\ \l_@@_name_email_tl & \g_@@_info_email_tl \\ \l_@@_name_supvb_tl & \clist_item:Nn \g_@@_info_supv_clist { 1 } \bool_if:NT \g_@@_opt_supvii_bool { \@@_quad: \clist_item:Nn \g_@@_info_supvii_clist { 1 } } \\ \end{tblr} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_g_decl_auth_sign:} % ������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_g_decl_auth_sign: { \l_@@_name_authsign_tl \tex_par:D \l_@@_name_blankdatea_tl } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_g_decl_auth_secretlv:} % ��������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_g_decl_auth_secretlv: { \l_@@_name_secretstatus_tl \tex_par:D \ensuremath { \mdwhtsquare } \l_@@_name_secretfree_tl \tex_par:D \ensuremath { \mdwhtsquare } \l_@@_name_secretdate_tl } %</def-g> % \end{macrocode} % \end{macro} % % \paragraph{���������} % % \begin{macro}{p/cover/name-img} % ������������������������������������ % \begin{macrocode} %<*def-p> \@@_declare_element:nn { p / cover / name-img } { content = \@@_name:N \l_@@_namewd_dim, bottom-skip = 40 pt } % \end{macrocode} % \end{macro} % % \begin{macro}{p/cover/report} % ������������������������������������ % \begin{macrocode} \@@_declare_element:nn { p / cover / report } { content = \l_@@_name_report_tl, format = \zihao { 0 } \sffamily, bottom-skip = 40 pt plus 1.5 fil } % \end{macrocode} % \end{macro} % % \begin{macro}{p/cover/title} % ������������������������������������ % \begin{macrocode} \@@_declare_element:nn { p / cover / title } { content = \l_@@_name_title_tl \l_@@_name_colon_tl \g_@@_info_title_tl, format = \zihao { 4 }, bottom-skip = 80 pt } % \end{macrocode} % \end{macro} % % \begin{macro}{p/cover/info} % ��������������������������������� % \begin{macrocode} \@@_declare_element:nn { p / cover / info } { content = \@@_p_cover_info:, format = \zihao { -4 }, bottom-skip = 0 pt } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_p_cover_info:,\@@_p_cover_info:NN} % ��������������������������� % \begin{arguments} % \item ���������������������|dim| ��������� % \item ������������ % \end{arguments} % \begin{macrocode} \cs_new:Npn \@@_p_cover_info: { \@@_p_cover_info:NN \l_@@_clabelwd_dim \l_@@_fmt_coverlabel_tl } \cs_new_protected:Npn \@@_p_cover_info:NN #1#2 { \clist_set:Nn \l_@@_tmp_clist { author, supvfull, dept, id, major, submitdate } % \end{macrocode} % ������������������������������������������������������������������������������ % \cs{l_@@_tmpb_dim}��� % \begin{macrocode} \@@_get_max_width:NN \l_@@_tmpb_dim \l_@@_tmp_clist % \end{macrocode} % ��������������������������� % \begin{macrocode} \clist_map_inline:Nn \l_@@_tmp_clist { \@@_box_spread_name:NNn #1 #2 {##1} \l_@@_name_colon_tl \@@_box_center:Nn \l_@@_tmpb_dim { \@@_info:n {##1} } \tex_par:D } } % \end{macrocode} % \end{macro} % % \subparagraph{���������������������������������} % % \begin{macro}{p/decl/orig/title} % ������������������������������^^A ��������������������������������������� % \begin{macrocode} \@@_declare_element:nn { p / decl / orig / title } { content = \l_@@_name_origdecl_tl, format = \l_@@_fmt_chapter_tl, bottom-skip = \l_@@_chapterafter_dim } % \end{macrocode} % \end{macro} % % \begin{macro}{p/decl/orig/text} % ������������������������������ % \begin{macrocode} \@@_declare_element:nn { p / decl / orig / text } { content = \l_@@_text_origdecl_tl, align = n, bottom-skip = 2 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{p/decl/orig/sign} % ��������������������������������� % \begin{macrocode} \@@_declare_element:nn { p / decl / orig / sign } { content = \@@_p_decl_sign:nn { origsign } { date }, bottom-skip = 0 pt plus 1 fill } % \end{macrocode} % \end{macro} % % \begin{macro}{p/decl/auth/title} % ������������������������������^^A ��������������������������������������� % \begin{macrocode} \@@_declare_element:nn { p / decl / auth / title } { content = \l_@@_name_authdecl_tl, format = \l_@@_fmt_chapter_tl, bottom-skip = \l_@@_chapterafter_dim } % \end{macrocode} % \end{macro} % % \begin{macro}{p/decl/auth/text} % ������������������������������ % \begin{macrocode} \@@_declare_element:nn { p / decl / auth / text } { content = \l_@@_text_authdecl_tl, align = n, bottom-skip = 2 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{p/decl/auth/sign} % ��������������������������������� % \begin{macrocode} \@@_declare_element:nn { p / decl / auth / sign } { content = \@@_p_decl_sign:nn { authsign } { date } \@@_p_decl_sign:nn { authsigna } { date }, bottom-skip = 0 pt plus 1 fill } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_p_decl_sign:nn} % ��������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_p_decl_sign:nn #1#2 { \@@_name:n {#1} \l_@@_name_colon_tl \tex_hfill:D \@@_name:n {#2} \l_@@_name_colon_tl \skip_horizontal:n { 160 pt } \@@_null: \@@_vskip: } %</def-p> % \end{macrocode} % \end{macro} % % % \subsubsection{������������} % \changes{v0.13}{2021/12/10}{������ \LaTeX3 ������������������������������} % \changes{v0.13}{2021/12/11}{������ \LaTeX3 ������������������������������} % \changes{v0.13}{2021/12/12}{������ \LaTeX3 ������������������������������������} % \changes{v0.15}{2022/01/25}{���������������������������������} % % ������������������������������������������ % % \begin{macro}{cover-u} % ������������������������������ % \begin{macrocode} %<*def-u> \@@_declare_page:nn { cover-u } { element = { emblem-img, name-img, title, info }, prefix = u / cover /, top-skip = -.3 cm, bottom-skip = 0 pt plus 1 fill } % \end{macrocode} % \end{macro} % % \begin{macro}{origdecl-u} % ������������������������������ % \begin{macrocode} \@@_declare_page:nn { origdecl-u } { element = { emblem, title, text, sign }, prefix = u / decl / orig /, bottom-skip = 0 pt plus 1 fil } %</def-u> % \end{macrocode} % \end{macro} % % \begin{macro}{cover-g-front} % ������������������������������������������ % \begin{macrocode} %<*def-g> \@@_declare_page:nn { cover-g-front } { element = { top, emblem-img, name-img, type, info, date }, prefix = g / cover-front /, format = \zihao { 3 } \kaishu, top-skip = 0 pt } % \end{macrocode} % \end{macro} % % \begin{macro}{cover-g-back} % ������������������������������������������ % \begin{macrocode} \@@_declare_page:nn { cover-g-back } { element = { info, sign }, prefix = g / cover-back /, format = \zihao { 3 } \kaishu, top-skip = 5.3 cm } % \end{macrocode} % \end{macro} % % \begin{macro}{cover-g-en} % ������������������������������������ % \begin{macrocode} \@@_declare_page:nn { cover-g-en } { element = { title, top, middle, emblem-img, bottom }, prefix = g / cover-en /, format = \linespread { 1.3 }, top-skip = 0 pt plus 1.2 fil } % \end{macrocode} % \end{macro} % % \begin{macro}{cover-nl} % ������������������������������������ % \begin{macrocode} \@@_declare_page:nn { cover-nl } { element = { top, name, title, middle, bottom, date }, prefix = cover-nl /, format = \kaishu } % \end{macrocode} % \end{macro} % % \begin{macro}{origdecl-g} % ������������������������������ % \begin{macrocode} \@@_declare_page:nn { origdecl-g } { element = { title, text, sign }, prefix = g / decl / orig /, top-skip = \l_@@_chapterbefore_dim, bottom-skip = 0 pt plus 1 fil, bm-text = \l_@@_name_origdecl_tl, bm-name = origdecl } % \end{macrocode} % \end{macro} % % \begin{macro}{authdecl-g} % ������������������������������ % \begin{macrocode} \@@_declare_page:nn { authdecl-g } { element = { title, text, sign, info, date }, prefix = g / decl / auth /, top-skip = \l_@@_chapterbefore_dim, bottom-skip = 0.5 cm plus 1.5 fill, bm-text = \l_@@_name_authdecl_tl, bm-name = authdecl, bookmark = toc } %</def-g> % \end{macrocode} % \end{macro} % % \begin{macro}{cover-p} % ������������������������������ % \begin{macrocode} %<*def-p> \@@_declare_page:nn { cover-p } { element = { name-img, report, title, info }, prefix = p / cover /, format = \bfseries, top-skip = 100 pt } % \end{macrocode} % \end{macro} % % \begin{macro}{authdecl-p} % ������������������������������ % \begin{macrocode} \@@_declare_page:nn { authdecl-p } { element = { orig/title, orig/text, orig/sign, auth/title, auth/text, auth/sign }, prefix = p / decl /, bm-text = ���������, bm-name = decl, top-skip = \l_@@_chapterbefore_dim, bottom-skip = 0 pt } %</def-p> % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_make_cover:} % \changes{v1.3}{2023/05/24}{��������������������������������� \opt{nl-cover} ������������������} % ��������������������������� % \begin{macrocode} %<*(def-u|def-g|def-p)> \cs_new_protected:Npn \@@_make_cover: { %<def-u> \UseInstance { nju } { cover-u } %<def-p> \UseInstance { nju } { cover-p } % \end{macrocode} % ������������������������������������ \opt{nlcover}��������������������������������������������������������� % ��������������������������� % \begin{macrocode} %<*def-g> \bool_if:NTF \g_@@_opt_nlcover_bool { \UseInstance { nju } { cover-nl } } { \UseInstance { nju } { cover-g-front } \UseInstance { nju } { cover-g-back } \UseInstance { nju } { cover-g-en } } %</def-g> } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_make_decl_i:} % \changes{v0.13}{2021/12/15}{������������������������������������} % \changes{v0.19}{2022/05/22}{���������������������������������������������} % ������������������������������������ % ������������������������������������������������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_make_decl_i: { \cleardoublepage %<def-u> \UseInstance { nju } { origdecl-u } %<def-g> \UseInstance { nju } { origdecl-g } %<def-p> \UseInstance { nju } { authdecl-p } \cleardoublepage } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_make_decl_ii:} % \changes{v0.17}{2022/04/04}{������������������������������������������������} % ��������������������������������������������������������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_make_decl_ii: { %<*def-g> \AtEndEnvironment { document } { \cleardoublepage \UseInstance { nju } { authdecl-g } \cleardoublepage } %</def-g> } %</(def-u|def-g|def-p)> % \end{macrocode} % \end{macro} % % % \subsubsection{������������} % % \begin{macro}{\@@_new_img_cmd:nn} % ������������������������������������������������ % \begin{macrocode} %<*class> \cs_new_protected:Npn \@@_new_img_cmd:nn #1#2 { \exp_args:Nc \NewDocumentCommand { nju #1 } { o m m } { \includegraphics [ width = ##2, height = ##3 ] {#2} } } % \end{macrocode} % \end{macro} % % \changes{v1.0}{2022/08/01}{��������������������������� \opt{image} ������} % \begin{macrocode} \keys_define:nn { nju / image } { % \end{macrocode} % \begin{macro}{image/nju-emblem,\njuemblem} % \changes{v0.14}{2021/12/23}{������������������������������������������} % ��������������������� % \begin{macrocode} nju-emblem .code:n = { \@@_new_img_cmd:nn { emblem } {#1} }, % \end{macrocode} % \end{macro} % % \begin{macro}{image/nju-name,\njuname} % \changes{v0.14}{2021/12/23}{������������������������������������������} % ��������������������� % \begin{macrocode} nju-name .code:n = { \@@_new_img_cmd:nn { name } {#1} } } % \end{macrocode} % \end{macro} % % \changes{v0.16}{2022/02/22}{������������������ \pkg{njuvisual}���} % ������ \tn{njuemblem} ��� \tn{njuname} ������������������������ % \begin{macrocode} \ctex_at_end_preamble:n { % \end{macrocode} % ��������������������������������������������������������������� % ��������������� \pkg{njuvisual} ������������������������ % \begin{macrocode} \bool_lazy_and:nnF { \cs_if_exist_p:N \njuemblem } { \cs_if_exist_p:N \njuname } { \cs_undefine:N \njuemblem \cs_undefine:N \njuname \msg_warning:nn { njuthesis } { missing-image } \RequirePackage { njuvisual } } } % \end{macrocode} % % \begin{macro}{\maketitle} % \changes{v0.12}{2021/12/01}{������������������������������������������������������������} % \changes{v0.13}{2021/12/12}{���������������������} % \changes{v0.13}{2021/12/15}{���������������������������������} % \changes{v1.4}{2024/03/12}{������������������������������������������} % ��������� \tn{maketitle} ������������������ % ������������������������������������������������������������������������������ % \begin{macrocode} \RenewDocumentCommand \maketitle { } { \bool_if:NF \g_@@_opt_draft_bool { \pagenumbering { gobble } \@@_make_cover: } \tl_gremove_all:Nn \g_@@_info_title_tl { \\ } \tl_gremove_all:Nn \g_@@_info_title_en_tl { \\ } % \end{macrocode} % ������������������ \opt{decl-page}������������������������������������������ % ��������������������������������������������������� % \begin{macrocode} \bool_lazy_and:nnT { ! \g_@@_opt_draft_bool } { \g_@@_opt_decl_bool } { \@@_make_decl_i: \@@_make_decl_ii: } % \end{macrocode} % ��������������������������������������������������������������������������� % \begin{macrocode} \cleardoublepage \exp_args:NV \pagestyle \l_@@_fmt_pagestyle_tl \pagenumbering { Roman } } %</class> % \end{macrocode} % \end{macro} % % % \subsection{���������} % % \subsubsection{������������} % \changes{v0.16}{2022/03/02}{������������������������ \file{.def} ���������} % \changes{v0.16}{2022/03/02}{������ \pkg{xtemplate} ���������������} % % \begin{macro}{abstract/title} % ��������������������������� % \begin{macrocode} %<*(def-u|def-g|def-p)> \@@_declare_element:nn { abstract / title } { %<def-u|def-g> content = \@@_abs_title:N \l_@@_name_abstracttitle_tl, %<def-p> content = \g_@@_info_title_tl, %<def-u|def-g> format = \bfseries \kaishu \zihao { -2 }, %<def-p> format = \bfseries, bottom-skip = 20 pt } % \end{macrocode} % \end{macro} % % \begin{macro}{abstract/en/title} % ��������������������������� % \begin{macrocode} \@@_declare_element:nn { abstract / en / title } { %<def-u|def-g> content = \@@_abs_title:N \l_@@_name_abstracttitle_en_tl, %<def-p> content = \g_@@_info_title_en_tl, %<def-u|def-g> format = \bfseries \kaishu \zihao { -2 }, %<def-p> format = \bfseries, bottom-skip = 20 pt } %</(def-u|def-g|def-p)> % \end{macrocode} % \end{macro} % % \begin{macro}{abstract/info} % ������������������������������ % \begin{macrocode} %<*(def-u|def-g)> \@@_declare_element:nn { abstract / info } { %<def-u> content = \@@_abs_info_u:, %<def-g> content = \@@_abs_info_g:, %<def-u> format = \zihao { -4 } \kaishu, %<def-g> format = \zihao { 4 } \kaishu, %<def-u> bottom-skip = 15 pt, %<def-g> bottom-skip = 30 pt, align = l } % \end{macrocode} % \end{macro} % % \begin{macro}{abstract/en/info} % ������������������������������ % \begin{macrocode} \@@_declare_element:nn { abstract / en / info } { %<def-u> content = \@@_abs_info_en_u:, %<def-g> content = \@@_abs_info_en_g:, %<def-u> format = \zihao { -4 }, %<def-g> format = \zihao { 4 }, %<def-u> bottom-skip = 15 pt, %<def-g> bottom-skip = 30 pt, align = l } %</(def-u|def-g)> % \end{macrocode} % \end{macro} % % \begin{macro}{abstract/mark} % ��������������������������� % \begin{macrocode} %<*(def-g|def-p)> \@@_declare_element:nn { abstract / mark } { content = \l_@@_name_abstractb_tl, format = \sffamily \zihao { -3 }, bottom-skip = 15 pt } % \end{macrocode} % \end{macro} % % \begin{macro}{abstract/en/mark} % ��������������������������� % \begin{macrocode} \@@_declare_element:nn { abstract / en / mark } { content = \l_@@_name_abstractb_en_tl, format = \sffamily \zihao { -3 }, bottom-skip = 15 pt } %</(def-g|def-p)> % \end{macrocode} % \end{macro} % % \paragraph{���������} % \changes{v0.13}{2021/12/12}{������ \LaTeX3 ������������������������������} % \changes{v1.0}{2022/06/16}{������������������������������������������} % % \begin{macro}{\@@_abs_info_u:,\@@_abs_info_en_u:} % ��������������������������������������� % \begin{macrocode} %<*def-u> \cs_new_protected:Npn \@@_abs_info_u: { \@@_abs_info_u:nn { } { \l_@@_name_colon_tl } } \cs_new_protected:Npn \@@_abs_info_en_u: { \@@_abs_info_u:nn { _en } { \l_@@_name_colon_en_tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_abs_info_u:nn} % ��������������������������������� % \begin{arguments} % \item ���������������������������|_en| ��������� % \item ��������� % \end{arguments} % ��������������������������������������������������������������������������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_abs_info_u:nn #1#2 { % \end{macrocode} % ������������������������������������������������������������������������������������������ % \begin{macrocode} \tl_set_eq:NN \l_@@_name_author_tl \l_@@_name_authora_tl % \end{macrocode} % ������������������������������������������������������������ % \begin{macrocode} \clist_map_inline:nn { title, dept, major, author, supvfull } { \@@_name:nn { abslabel #1 } { ##1 #1 } #2 \@@_info:n { ##1 #1 } \\ } \@@_name:nn { abslabel #1 } { abstract #1 } #2 } %</def-u> % \end{macrocode} % \end{macro} % % \paragraph{���������} % \changes{v0.13}{2021/12/12}{������ \LaTeX3 ������������������������������} % % \begin{macro}{\@@_abs_info_g:,\@@_abs_info_en_g:} % ��������������������������������������� % \begin{macrocode} %<*def-g> \cs_new_protected:Npn \@@_abs_info_g: { \@@_abs_info_g:N \l_@@_name_colon_tl } \cs_new_protected:Npn \@@_abs_info_en_g: { \@@_abs_info_en_g:N \l_@@_name_colon_en_tl } % \end{macrocode} % \end{macro} % % % \begin{macro}{\@@_abs_info_g:N} % ��������������������������������������� % \begin{arguments} % \item ��������� % \end{arguments} % ������������������������������������������������������������������������������������������������������ % ������ \cs{@@_full_uline:NV} ������������������������������ \cs{@@_uline:n} ��� % \cs{@@_ulined_center_box:nn} ��������������������������������������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_abs_info_g:N #1 { \@@_uline_list:NNe \g_@@_info_title_tl \g_@@_abs_title_left_skip { \l_@@_name_titlea_tl #1 } % \end{macrocode} % ��������������������������� % \begin{macrocode} \@@_get_width_print:Ne \l_@@_tmp_skip { \dim_set:Nn \l_@@_tmpa_dim { 11 em } \dim_set:Nn \l_@@_tmpb_dim { 4 em } \@@_box_ulined_info:Nn \l_@@_tmpa_dim { major } \l_@@_name_majora_tl \@@_box_ulined_info:Nn \l_@@_tmpb_dim { grade } \l_@@_name_grade_tl \l_@@_name_authora_tl #1 } \@@_box_ulined_info:Nn \l_@@_tmp_skip { author } \tex_par:D % \end{macrocode} % ������������������������ % \begin{macrocode} \@@_get_width_print:Ne \l_@@_tmpa_dim { \l_@@_name_supva_tl #1 } \@@_box_ulined_info:Nn \l_@@_tmpa_dim { supvfull } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_abs_info_en_g:N} % \changes{v1.0}{2022/07/01}{������������������������������������������} % \changes{v1.1}{2022/12/12}{������������������������������������������} % ��������������������������������������������������������������������������������������������� % ������������������������������������ % \begin{arguments} % \item ��������� % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_abs_info_en_g:N #1 { \bool_if:NTF \g_@@_abs_underline_bool { \@@_uline_list:NNe \g_@@_info_title_en_tl \g_@@_abs_title_left_skip { \l_@@_name_title_en_tl #1 } \clist_map_inline:nn { major, author, supvfull } { \tex_par:D \@@_get_width_print:Ne \l_@@_tmpa_dim { \@@_name:n { ##1 _en } #1 } \@@_box_ulined_info:Nn \l_@@_tmpa_dim { ##1 _en } } } { \clist_map_inline:nn { title, major, author, supvfull } { \@@_name:n { ##1 _en } #1 \@@_info:n { ##1 _en } \\ } } } %</def-g> % \end{macrocode} % \end{macro} % % \paragraph{���������������} % % \begin{macro}{\@@_print_keywords:nn} % ��������������������������������� % \begin{arguments} % \item ���������������������������|_en| ��������� % \item ������������������ % \end{arguments} % \begin{macrocode} %<*class> \cs_new_protected:Npn \@@_print_keywords:nn { \@@_print_keywords:NNnn \l_@@_tmpa_tl \l_@@_tmpa_dim } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_print_keywords:NNnn} % \begin{arguments} % \item |tl| ������������ % \item |dim| ������������ % \end{arguments} % \begin{macrocode} \cs_new:Npn \@@_print_keywords:NNnn #1#2#3#4 { \tl_set:Nv #1 { l_@@_name_keywords #3 _tl } \exp_args:NNv \tl_put_left:Nn #1 { l_@@_fmt_abslabel #3 _tl } \exp_args:NNv \tl_put_right:Nn #1 { l_@@_name_colon #3 _tl } \@@_get_width:NV #2 #1 % \end{macrocode} % ��������������������������������������� \tn{list} ��������������� % \begin{macrocode} \list {#1} { \labelwidth #2 \labelsep \c_zero_dim \leftmargin \c_zero_dim \rightmargin \c_zero_dim \advance \leftmargin #2 % \end{macrocode} % ��������������������������������� % \begin{macrocode} \__nju_cs_clear:N \makelabel } \item \clist_use:cn { g_@@_info_keywords #3 _clist } {#4} \endlist } %</class> % \end{macrocode} % \end{macro} % % % \subsubsection{������������} % \changes{v0.16}{2022/03/26}{������������������������������������������} % % \begin{macro}{\@@_make_abstract:,\@@_make_abstract_en:} % ��������������������� % \begin{macrocode} %<*(def-u|def-g|def-p)> \cs_new_protected:Npn \@@_make_abstract: { \UseInstance { nju } { abstract / title } %<def-u|def-g> \UseInstance { nju } { abstract / info } %<def-g|def-p> \UseInstance { nju } { abstract / mark } } \cs_new_protected:Npn \@@_make_abstract_en: { \UseInstance { nju } { abstract / en / title } %<def-u|def-g> \UseInstance { nju } { abstract / en / info } %<def-g|def-p> \UseInstance { nju } { abstract / en / mark } } %</(def-u|def-g|def-p)> % \end{macrocode} % \end{macro} % % % \subsubsection{������������} % % \begin{macro}{\g_@@_abs_title_left_skip} % ��������������������������������� % \begin{macrocode} %<*class> \skip_new:N \g_@@_abs_title_left_skip % \end{macrocode} % \end{macro} % % \changes{v1.0}{2022/08/01}{������������������������} % \begin{macrocode} \keys_define:nn { nju / abstract } { % \end{macrocode} % \begin{macro}{abstract/toc-entry} % \changes{v0.15}{2022/02/04}{������������������������������������������} % ��������������������������������� % \begin{macrocode} toc-entry .bool_gset:N = \g_@@_abs_showentry_bool, toc-entry .initial:n = true, % \end{macrocode} % \end{macro} % % \begin{macro}{abstract/underline} % \changes{v1.2}{2023/04/23}{������������������������������������������������} % ������������������������������������������������������������ % \begin{macrocode} underline .bool_gset:N = \g_@@_abs_underline_bool, underline .initial:n = true, % \end{macrocode} % \end{macro} % % \begin{macro}{abstract/title-style} % \changes{v0.16}{2022/03/26}{���������������������������������������} % ������������������������������ \opt{strict}��� % \begin{macrocode} title-style .choice:, title-style / strict .code:n = { \bool_gset_true:N \g_@@_abs_title_strict_bool \skip_gset:Nn \g_@@_abs_title_left_skip { .5 em } }, title-style / centered .code:n = { \bool_gset_true:N \g_@@_abs_title_strict_bool \skip_gset:Nn \g_@@_abs_title_left_skip { .5 em plus 1 fill } }, title-style / natural .code:n = { \bool_gset_false:N \g_@@_abs_title_strict_bool \skip_gset:Nn \g_@@_abs_title_left_skip { .5 em plus 1 fill } }, title-style .initial:n = strict } % \end{macrocode} % \end{macro} % % \begin{environment}{abstract} % \changes{v0.13}{2021/12/12}{���������������������} % ��������������������� % \begin{macrocode} \NewDocumentEnvironment { abstract } { +b } { \cleardoublepage \thispagestyle { plain } \@@_abs_bookmark:Vn \l_@@_name_abstracta_tl { abstract } \tl_gremove_all:Nn \g_@@_info_title_tl { \\ } \@@_make_abstract: \group_begin: \kaishu \zihao { -4 } #1 } { \@@_print_keywords:nn { } { ��� } \group_end: } % \end{macrocode} % \end{environment} % % \begin{environment}{abstract*} % ���������������������\pkg{xparse} ������������������������������������������������������������������������ % \begin{macrocode} \NewDocumentEnvironment { abstract* } { +b } { \cleardoublepage \thispagestyle { plain } \@@_abs_bookmark:Vn \l_@@_name_abstracta_en_tl { abstract-en } % \end{macrocode} % \changes{v1.3}{2023/08/21}{������������������������������������������������������} % ������������������������������������������������������������������������������ % \begin{macrocode} \tl_gremove_all:Nn \g_@@_info_title_en_tl { \\ } \@@_make_abstract_en: \group_begin: \zihao { -4 } #1 } { \@@_print_keywords:nn { _en } { ;~ } \group_end: } % \end{macrocode} % \end{environment} % % % \subsection{������������} % % \begin{environment}{preface} % \begin{environment}{acknowledgement} % ������������������������������������ % \begin{macrocode} \NewDocumentEnvironment { preface } { +b } { \@@_chapter:V \l_@@_name_preface_tl #1 } { \cleardoublepage } \NewDocumentEnvironment { acknowledgement } { +b } { \@@_acknowledgement:n {#1} } { \cleardoublepage } % \end{macrocode} % \end{environment} % \end{environment} % % \begin{macro}{\@@_acknowledgement:n} % ������������������������������ % \begin{macrocode} \cs_new:Npn \@@_acknowledgement:n { \@@_chapter:V \l_@@_name_acknowledgement_tl \use:n } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_acknowledgement_anon:n} % ��������������������������������������� % \begin{macrocode} \cs_new:Npn \@@_acknowledgement_anon:n { \@@_bookmark_toc:V \l_@@_name_acknowledgementa_tl \use_none:n } % \end{macrocode} % \end{macro} % % % \subsection{������������} % % \begin{macro}{\@@_anon_paperlist_setup:} % ������������������������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_anon_paperlist_setup: { \ctex_at_end_package:nn { biblatex } { \DeclareBibliographyDriver { anonymous } { \usebibmacro { begentry } \usebibmacro { journal },~ \usebibmacro { date } \usebibmacro { finentry } } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_paperlist_anon:nn} % ��������������������������������������� % \begin{macrocode} \cs_new:Npn \@@_paperlist_anon:nn #1#2 { \group_begin: \newrefsection \nocite {#2} \printbiblist [ title = #1, driver = anonymous, env = bibliography, heading = subbibliography ] { anonymous } \endrefsection \group_end: } % \end{macrocode} % \end{macro} % \begin{macro}{\@@_paperlist:nn} % ��������������������������������������� % \begin{macrocode} \cs_new:Npn \@@_paperlist:nn #1#2 { \group_begin: % \end{macrocode} % ��������������������������������������������������������������������������������� % ������ \pkg{biblatex} ��������� \tn{MakeCapital} ��������� robust ��������� % ������������������������������������������������������������������������ % ��������������� \cs{str_uppercase:f} ������������������������ % \begin{macrocode} \cs_set_eq:NN \MakeCapital \str_uppercase:f \RenewDocumentCommand \mkbibnamegiven { m } { \ifitemannotation { thesisauthor } { \bfseries \njuline {##1} } {##1} } \RenewDocumentCommand \mkbibnamefamily { m } { \ifitemannotation { thesisauthor } { \bfseries \njuline {##1} } {##1} } % \end{macrocode} % ��������������������������������������������������� % \begin{macrocode} \RenewDocumentCommand \mkbibdateshort { m m m } { \textbf { \thefield {##1} } } % \end{macrocode} % \changes{v1.1}{2023/04/07}{������������������������������������������������������������} % ��������������������� \env{refsection} ���������\tn{newrefsection} ������������ % ��������������������� \env{refsection}������������������������������������������������ % \begin{macrocode} \newrefsection \nocite {#2} \printbibliography [ heading = subbibliography, title = #1 ] \endrefsection \group_end: } % \end{macrocode} % \end{macro} % % \begin{macro}{\njupaperlist} % \changes{v0.10}{2021/09/29}{������������������������������} % \changes{v0.14}{2021/12/20}{������������������������������������������������������} % \changes{v1.2}{2023/04/07}{������������������������������������������������������} % \changes{v1.4}{2024/03/21}{������������������������������������������������} % \changes{v1.4}{2024/04/15}{������������������������������������������������������} % ��������������� % \begin{macrocode} \NewDocumentCommand \njupaperlist { O { \l_@@_name_paperlist_tl } m } { \@@_paperlist:nn {#1} {#2} } % \end{macrocode} % \end{macro} % % % \subsection{������������} % \changes{v1.4}{2024/04/19}{���������������������������} % % \begin{macro}{anonymous-mode/no-nju} % \changes{v1.4}{2024/04/19}{���������������������������������������������������} % \begin{macrocode} \keys_define:nn { nju / anonymous-mode } { no-nju .bool_gset:N = \g_@@_opt_nonju_bool, no-nju .initial:n = false } % \end{macrocode} % \end{macro} % % \begin{macrocode} \bool_if:NT \g_@@_opt_anon_bool { % \end{macrocode} % \changes{v1.1}{2022/09/26}{������������������������������������} % ������������������������������������ % \begin{macrocode} \bool_gset_false:N \g_@@_opt_decl_bool % \end{macrocode} % \changes{v1.4}{2024/04/15}{���������������������������������������} % ��������������������������������������� $\times\times\times$ ��������� % \begin{macrocode} \keys_set:nn { nju / info } { author = \@@_name:n { anonymous a }, author* = \@@_name:n { anonymous a }, supervisor = { \@@_name:n { anonymous a }, \@@_name:n { anonymous b } }, supervisor* = { \@@_name:n { anonymous c } \@@_quad: \@@_name:n { anonymous a } }, supervisor-ii = , supervisor-ii* = } % \end{macrocode} % ��������������������������������� % \begin{macrocode} \@@_anon_paperlist_setup: \cs_gset_eq:NN \@@_paperlist:nn \@@_paperlist_anon:nn \cs_gset_eq:NN \@@_keys_set:nn \@@_keys_set_anon:nn \cs_gset_eq:NN \@@_acknowledgement:n \@@_acknowledgement_anon:n } % \end{macrocode} % % ������ \opt{no-nju} ������������������������������������������������������ % \begin{macrocode} \ctex_at_end_preamble:n { \bool_lazy_and:nnT { \g_@@_opt_anon_bool } { \g_@@_opt_nonju_bool } { \tl_clear:N \l_@@_name_nju_tl \tl_clear:N \l_@@_name_nju_en_tl \tl_gclear:N \g_@@_info_code_tl \RenewDocumentCommand \njuemblem { o m m } { } \RenewDocumentCommand \njuname { o m m } { } } } % \end{macrocode} % % % \subsection{���������} % % \begin{macro}{\@@_notation_label:n} % ��������������������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_notation_label:n #1 { #1 \tex_hfil:D } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_make_notation:nn} % ������������������������������������������������������������������������ \env{longtable} ��������� % \env{description} ������������������������������������������������������������������������������������ % \LaTeXe ��������������������������������������������������� \file{source2e.pdf} ������ % File I \quad ltlists.dtx ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_make_notation:nn #1#2 { \dim_set:Nn \l_@@_tmpa_dim { \textwidth - #1 - #2 } \list { } { % \end{macrocode} % \tn{list} ��������������������������������������������������������������������������������� % \tn{labelwidth} ������������������������������������������ % \begin{macrocode} \labelwidth #2 \labelsep \c_zero_dim \itemsep \c_zero_dim \parsep \c_zero_dim % \end{macrocode} % ��������������������������������������������������������������������������������� \tn{leftmargin} ��� % \tn{rightmargin} ������������ % \begin{macrocode} \leftmargin .5\l_@@_tmpa_dim \rightmargin \leftmargin \advance \leftmargin #2 \cs_set_eq:NN \makelabel \@@_notation_label:n } } % \end{macrocode} % \end{macro} % % \begin{environment}{notation} % \changes{v0.15}{2022/01/17}{������������������������} % ������������������ % \begin{arguments} % \item ��������������������������������� 10 em������������������������������������������������������������ % \item ��������������������������������� 5 em % \end{arguments} % \begin{macrocode} \NewDocumentEnvironment { notation } { O { 10 em } O { 5 em } } { \@@_chapter:V \l_@@_name_notation_tl \@@_make_notation:nn {#1} {#2} } { \endlist \cleardoublepage } % \end{macrocode} % \end{environment} % % \begin{environment}{notation*} % ��������������������������������������������� % \begin{macrocode} \NewDocumentEnvironment { notation* } { O { 10 em } O { 5 em } } { \chapter * { \l_@@_name_notation_tl } \@@_make_notation:nn {#1} {#2} } { \endlist \cleardoublepage } %</class> % \end{macrocode} % \end{environment} % % % \subsection{������������} % \label{subsec:constant-config} % \changes{v0.16}{2022/02/23}{������������������������ \file{.def} ���������} % \changes{v0.18}{2022/04/20}{������ |const| ���������������������������} % % ������������������������������������������������������������������������������������������ % % \subsubsection{������} % \label{subsubsec:constant-name} % % \changes{v0.19}{2022/05/22}{������������������������������������������} % \changes{v0.19}{2022/05/22}{������������������������������������������������} % \changes{v1.0}{2022/06/19}{������������������������������������} % \changes{v1.0}{2022/06/19}{���������supv_ii -> supvii���supv_ttl -> supvtitle���} % % ������������������������������������������������������������������������������������������������������ % ������������������������������������ % % ��������������������������������������������������� % \begin{macrocode} %<*(def-u|def-g|def-p)> \clist_map_inline:nn { { acknowledgement } { ��� \qquad{} ��� }, { acknowledgement a } { ��������������������������������������� }, { anonymous a } { \ensuremath { \times\times\times } }, { anonymous b } { \ensuremath { \times\times\times } }, { anonymous c } { \ensuremath { \times\times\times } }, %<def-g> { auth decl } { ��������������������������� }, %<def-p> { auth decl } { ��������������������������� }, %<def-p> { author } { ������ }, % \end{macrocode} % ��������������������������������� % \begin{macrocode} %<def-u> { author a } { ��������������� }, %<def-g> { author a } { \g_@@_info_type_tl ��������� }, %<def-g> { auth sign } { ���������������\njuline{\hspace{6em}} }, %<def-p> { auth sign } { ������������ }, %<def-p> { auth sign a } { ������������ }, %<def-g> { chairman } { ��������������������� }, %<def-g> { clc } { ��������� }, %<def-g> { code } { ������������ }, %<def-g> { confer } { ��������������������������� }, { date } { ������ }, %<def-g> { defend date } { ������������������ }, %<def-g> { degree } { ������������������ }, % \end{macrocode} % ������������������������������������������ % \begin{macrocode} %<def-g> { degree a } { ������������ }, %<def-p> { dept } { ������ }, % \end{macrocode} % ������������������������������������������ % \begin{macrocode} %<def-g> { dept a } { ������������ }, %<def-g> { email } { ������ Email }, %<def-g> { field } { ������������ }, %<def-u> { grade } { ������ }, %<def-g> { grade } { ��� }, %<def-u|def-g> { id } { ������ }, %<def-p> { id } { ������ }, % \end{macrocode} % ������������������������������������������ % \begin{macrocode} %<def-g> { id a } { ��������������� }, { listoffigures } { ������������ }, { listoftables } { ������������ }, %<def-p> { major } { ������������ }, % \end{macrocode} % ��������������������������������� % \begin{macrocode} %<def-g> { major a } { ������ }, % \end{macrocode} % ������������������������������������������������ % \begin{macrocode} %<def-g> { major b } { ������������ }, % \end{macrocode} % ��������������������������������������������� % \begin{macrocode} %<def-g> { major c } { ������������������(������) }, { notation } { ��������� }, %<def-u> { orig decl } %<def-u> { ������������������������������������������ \\ ��������������� }, %<def-g> { orig decl } { ��������������������������������������� }, %<def-p> { orig decl } { ��������������������������� }, %<def-u> { orig sign } { ������������ }, %<def-g> { orig sign } { ��������������� }, %<def-p> { orig sign } { ������������������������ }, { paper list } { ������������������ }, { pdf creator } { LaTeX~ with~ njuthesis~ class }, { preface } { ��� \qquad{} ��� }, %<def-p> { report } { ��������������������������� }, %<def-g> { reviewer } { ��������� }, %<def-g> { secret lv } { ������ }, %<def-g> { secret status } { ��������������������� }, %<def-g> { secret free } { ��������� }, %<def-g> { secret date } %<def-g> { ��������������������� \l_@@_name_blankdatea_tl ��� %<def-g> \l_@@_name_blankdatea_tl ��� }, %<def-g> { sign } { ������������ }, %<def-g> { sign a } { ��������������� }, %<def-g> { sign b } { ������������ }, %<def-g> { stzhongs file } { STZhongsong }, %<def-u> { submit date } { ������������ }, %<def-g> { submit date } { ������������������ }, %<def-p> { submit date } { ������������ }, %<def-g> { subtitle } { ������������������������ }, %<def-u> { supv } { ������������ }, %<def-g> { supv } { ������ }, %<def-p> { supv full } { ������������ }, % \end{macrocode} % ��������������������������������� % \begin{macrocode} %<def-g> { supv a } { ��������������������������������� }, % \end{macrocode} % ������������������������������������������ % \begin{macrocode} %<def-g> { supv b } { ������������ }, %<def-g> { supv info } %<def-g> { ��������������������������������������������������������������������� }, { supv ii } { ������������ }, { supv title } { ������ }, { tableofcontents } { ��� \qquad{} ��� }, %<def-p> { title } { ������������ }, % \end{macrocode} % ��������������������������������� % \begin{macrocode} %<def-g> { title a } { ������������������ }, % \end{macrocode} % ������������������������������������������������ % \begin{macrocode} %<def-g> { title b } { ������������ }, % \end{macrocode} % ������������������������������������������ % \begin{macrocode} %<def-g> { title c } { ������������ }, %<def-g> { udc } { U D C }, %<def-g> { year } { ������������ } } { \@@_define_name:nn #1 } % \end{macrocode} % % ������������������������������������������������ % \begin{macrocode} \clist_map_inline:nn { { abstract } { ������ } { ABSTRACT }, % \end{macrocode} % ��������������������������������� % \begin{macrocode} { abstract a } { ������������ } { ABSTRACT }, % \end{macrocode} % ������������������������������������ % \begin{macrocode} { abstract b } { ���\qquad{}��� } { ABSTRACT }, %<def-u|def-g> { abstracttitle } %<def-u> { \l_@@_name_nju_tl ������������������������������������������������������ } %<def-u> { \l_@@_name_nju_tl ������������������������������������������������������ }, %<def-g> { \l_@@_name_nju_tl ��������������������������������������������� } %<def-g> { \l_@@_name_nju_tl ��������������������������������������������� }, { appendix } { ������ } { appendix }, %<def-u> { author } { ������������ } { UNDERGRADUATE }, %<def-g> { author } { ������������ } { POSTGRADUATE }, { blankdate } { \qquad{}��� \quad{}��� \quad{}��� } { }, { blankdate a } { \njuline{\qquad\qquad} ��� \njuline{\qquad} ��� \njuline{\qquad} ��� } { }, % \end{macrocode} % \changes{v1.4}{2024/04/03}{������ \hologo{LuaLaTeX} ������������������������������} % ��������������������������������� \hologo{LuaLaTeX} ��������������������������������������������������� % \begin{macrocode} { colon } { ���\hskip 0pt minus .4em } { : \c_space_tl }, %<def-u|def-g> { dept } { ������ } { DEPARTMENT }, { figure } { ��� } { figure }, { keywords } { ��������� } { KEYWORDS }, { lang } { ������ } { ������ }, %<def-u> { major } { ������ } { SPECIALIZATION }, %<def-g> { major } { ������������ } { SPECIALIZATION }, { nju } { ������������ } { Nanjing~ University }, { suffix } { } { _en }, %<def-u> { supv full } { ��������������������������������� } { MENTOR }, %<def-g> { supv full } { ������������ } { MENTOR }, { table } { ��� } { table }, %<def-u> { title } { ������ } { THESIS }, %<def-g> { title } { ������������ } { THESIS }, %<def-u> { type } { ������������������ } { u } %<def-g> { type } { ������������ } { g } } { \@@_define_name:nnn #1 } % \end{macrocode} % % \subsubsection{������} % \label{subsubsec:constant-text} % % \begin{variable}{\l_@@_text_origdecl_tl} % ��������������������������������������������������������������������������������������� % \begin{macrocode} \tl_set:Nn \l_@@_text_origdecl_tl { %<*def-u> ��������������������������������������������������������������������� \g_@@_info_title_tl ��� ������������������������������������������������������������������������������������������������ ��������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� %</def-u> %<*def-g> ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������� %</def-g> %<*def-p> ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������ %</def-p> } % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_text_authdecl_tl} % ������������������������������������������ % \begin{macrocode} %<*(def-g|def-p)> \tl_set:Nn \l_@@_text_authdecl_tl { %<*def-g> ��������������������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������������������������ ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ������������������������������������������ %</def-g> %<*def-p> ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������� ������������������������������������������������������������������ %</def-p> } %</(def-g|def-p)> % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_text_cover_en_tl} % ��������������������������������� % \begin{macrocode} %<*def-g> \tl_set:Nn \l_@@_text_cover_en_tl { A~ dissertation~ submitted~ to \\ the~ graduate~ school~ of~ \l_@@_name_nju_en_tl \\ in~ partial~ fulfilment~ of~ the~ requirements~ for~ the~ degree~ of } %</def-g> % \end{macrocode} % \end{variable} % % \subsubsection{������} % \label{subsubsec:constant-length} % % \changes{v0.17}{2022/04/09}{��������������������� \file{.def} ���������} % \changes{v1.0}{2022/06/11}{������������������������������������������������} % ������������������������������������������������������������������������������������������������������������ % \begin{macrocode} \clist_map_inline:nn { % \end{macrocode} % ��������������������������������� % \begin{macrocode} %<def-u> { c label wd } { 68 pt }, %<def-g> { c label wd } { 2.97 cm }, %<def-g> { c label wd i } { 3.90 cm }, %<def-g> { c label wd ii } { 2.62 cm }, %<def-p> { c label wd } { 50 pt }, % \end{macrocode} % ��������������������������������� % \begin{macrocode} %<def-u> { c rule wd } { 8 cm }, %<def-g> { c rule wd } { 6.7 cm }, %<def-g> { c rule wd i } { 6.2 cm }, %<def-g> { c type wd } { 239 pt }, % \end{macrocode} % ������������������������ % \begin{macrocode} %<def-u> { emblem wd } { 68 pt }, %<def-g> { emblem wd } { 40 pt }, %<def-u> { emblem wd i } { 68 pt }, %<def-g> { emblem wd ii } { 61 pt }, % \end{macrocode} % ������������������������ % \begin{macrocode} %<def-u> { name wd } { 300 pt }, %<def-g> { name wd } { 111 pt }, %<def-p> { name wd } { 220 pt }, % \end{macrocode} % ������������������������������������������������������������������������������������������������ % \begin{macrocode} { rule ht i } { .4 pt }, { rule ht ii } { .8 pt }, % \end{macrocode} % ��������������������������������� % \begin{macrocode} { rule dp i } { -.7 ex }, { rule dp ii } { -.9 ex }, { rule dp iii } { -1.2 ex }, % \end{macrocode} % ��������������� % \begin{macrocode} %<def-u> { h sep } { 0 pt }, %<def-g|def-p> { h sep } { 5 pt }, { v sep } { 1 ex }, % \end{macrocode} % ��������������������������� % \begin{macrocode} { chapter before } { 10 pt }, { chapter after } { 60 pt }, % \end{macrocode} % ��������������������� % \begin{macrocode} { fn hang } { 13.5 pt } } { \@@_define_dim:nn #1 } % \end{macrocode} % % \subsubsection{������} % \label{subsubsec:constant-format} % % \changes{v0.17}{2022/04/09}{������������������������ \file{.def} ���������} % \changes{v0.20}{2022/05/28}{���������������������������������������������������} % ��������������� % \begin{macrocode} \clist_map_inline:nn { %<def-u> { pagestyle } { plain }, %<def-g|def-p> { pagestyle } { headings }, { abslabel } { \bfseries }, { abslabel_en } { }, %<def-u> { cover title } { \bfseries }, %<def-g> { cover title } { }, %<def-u> { cover label } { \kaishu }, %<def-g> { cover label } { \bfseries }, %<def-p> { cover label } { }, % \end{macrocode} % ������ \pkg{njuvisual} ��������������������� % \begin{macrocode} { emblem color } { black }, { name color } { black }, % \end{macrocode} % ��������������������� % \begin{macrocode} { section } { \bigger \normalfont \sffamily }, { chapter } { \l_@@_fmt_section_tl \centering }, { subsection } { \l_@@_fmt_section_tl }, { subsubsection } { \l_@@_fmt_section_tl }, { paragraph } { \l_@@_fmt_section_tl }, { subparagraph } { \l_@@_fmt_section_tl }, % \end{macrocode} % ������������������������������ % \begin{macrocode} { chapterintoc } { \l_@@_fmt_section_tl }, % \end{macrocode} % ������������������������������ % \begin{macrocode} % \end{macrocode} % \changes{v1.3}{2023/07/08}{���������������������������������} % \env{tabular} ��������������������������� % \begin{macrocode} { tabular } { \zihao { 5 } }, { toc title } { \centering \zihao { 3 } \bfseries }, { header } { \small \kaishu }, { footer } { \small \rmfamily } } { \@@_define_fmt:nn #1 } %</(def-u|def-g|def-p)> % \end{macrocode} % % % \subsection{��������������� \cls{njuthesis-doc}} % \changes{v1.3}{2023/05/12}{��������������������������������������� \cls{njuthesis-doc} ������������} % % \begin{macrocode} %<*doc-cls> %<@@=njudoc> % \end{macrocode} % % % \begin{macrocode} \RequirePackage { l3keys2e } % \end{macrocode} % % \subsubsection{������} % % \begin{macrocode} \keys_define:nn { njudoc } { codehigh .bool_gset:N = \g_@@_codehigh_bool, codehigh .initial:n = false } \ProcessKeysOptions { njudoc } % \end{macrocode} % % \subsubsection{������������} % % \begin{macrocode} \PassOptionsToPackage { fontset = fandol } { ctex } \PassOptionsToPackage { firstpage = true } { background } % \end{macrocode} % % ������������������������ % \begin{macrocode} \LoadClass { ctxdoc } % \end{macrocode} % % ��������������� % \begin{macrocode} \RequirePackage { background, codehigh, listings, njuvisual, tabularray, unicode-math, zhlineskip } \sys_if_engine_xetex:TF { \RequirePackage { xeCJKfntef } \renewcommand\emph[1]{\CJKunderdot[textformat=\itshape]{#1}} } { \RequirePackage { lua-ul } \NewDocumentCommand \CJKunderline { o m } { \underLine {#1} } \NewDocumentCommand \CJKunderdot { o m } { \underLine {#1} } \NewDocumentCommand \CJKsout { o m } { \textcolor { black!50 } {#1} } } % \end{macrocode} % % ���������������������������������������������������2023���11������\cls{l3doc} ��������������������������������������� % ������ \href{https://github.com/CTeX-org/ctex-kit/pull/678}{\texttt{CTeX-org/ctex-kit\#678}} % ������ \href{https://github.com/CTeX-org/ctex-kit/pull/700}{\texttt{CTeX-org/ctex-kit\#700}}��� % \begin{macrocode} \cs_generate_variant:Nn \__codedoc_get_hyper_target:nN { x } \cs_generate_variant:Nn \tl_replace_all:Nnn { No } % \end{macrocode} % % ������������������������ \href{https://github.com/CTeX-org/ctex-kit/pull/703}{\texttt{CTeX-org/ctex-kit\#703}}��� % \begin{macrocode} \cs_if_exist:NF \__codedoc_macroname_prefix:o { \cs_new_protected:Npn \__codedoc_macroname_prefix:n #1 { \__codedoc_if_macro_internal:nTF {#1} { \__codedoc_typeset_aux:n {#1} } {#1} } \cs_generate_variant:Nn \__codedoc_macroname_prefix:n { o } \cs_new_protected:Npn \__codedoc_macroname_suffix:N #1 { \bool_if:NTF #1 { \__codedoc_typeset_TF: } { } } } % \end{macrocode} % % \subsubsection{������} % % ��������������������� % \begin{macrocode} \backgroundsetup{ contents={\njuemblem[white!85!gray]{22cm}{!}}, scale=1, angle=0, hshift=-4cm } % \end{macrocode} % % ��������������� % \begin{macrocode} \definecolor{tpblue}{HTML}{495A80} \newcommand\tpbutton[1]{\textcolor{tpblue}{\bfseries #1}} \newcommand\tikzlogo{Ti\emph{k}Z} \newcommand\OPT[1]{\textcolor{njuyellow}{\bfseries#1}} % \end{macrocode} % % \pkg{hyperref} ��������� % \begin{macrocode} \hypersetup{ pdftitle = { The~ njuthesis~ class~ -~ LaTeX~ thesis~ template~ for~ Nanjing~ University}, citecolor = njublue, linkcolor = njuviolet, urlcolor = njumagenta} % \end{macrocode} % % \pkg{tabularray} ��������� % \begin{macrocode} \UseTblrLibrary{booktabs,siunitx} \DefTblrTemplate{caption-tag}{default}{���\hspace{0.25em}\thetable} \SetTblrStyle{caption-tag}{font=\bfseries} \SetTblrInner{row{1}={font=\bfseries}} \SetTblrInner[talltblr]{row{1}={font=\bfseries}} \DefTblrTemplate{caption-sep}{default}{\quad} % \end{macrocode} % % \pkg{tabularray} ��������������������� % \begin{macrocode} \def\TA{\TblrNote{a}} \def\TB{\TblrNote{b}} \def\TC{\TblrNote{c}} \def\TD{\TblrNote{d}} \def\TE{\TblrNote{e}} % \end{macrocode} % % % \TeX{} ������������������������ % \begin{macrocode} \def\TL{\TeX~Live} \def\MacTeX{Mac\TeX} \def\biber{\hologo{biber}} \def\LaTeXe{\hologo{LaTeX2e}} % \end{macrocode} % % \pkg{zhlineskip} ��������� % \begin{macrocode} \SetTextEnvironmentSinglespace{1.112} \SetMathEnvironmentSinglespace{1.112} % \end{macrocode} % % \subsubsection{������������} % % \begin{macrocode} \setmainfont { texgyretermes } [ Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic ] % \end{macrocode} % % ������ \pkg{lexend}��� % \begin{macrocode} \setsansfont{LexendDeca} % \end{macrocode} % % Iosevka��� % \begin{macrocode} \fontspec_font_if_exist:nT { Iosevka } { \setmonofont { Iosevka } [ UprightFont = *~Light, ItalicFont = *~Light~Italic, BoldFont = *~Semibold ] } % \end{macrocode} % % ��������������� % \begin{macrocode} \fontspec_font_if_exist:nT { Source~ Han~ Serif~ SC } { \setCJKmainfont{ Source~ Han~ Serif~ SC } [ UprightFont = *~SemiBold, ItalicFont = *~Bold, BoldFont = *~Heavy, Language = Chinese~Simplified ] } % \end{macrocode} % % \begin{macrocode} \setCJKsansfont { FandolHei-Regular } [ Extension = .otf, BoldFont = FandolHei-Bold ] \setCJKmonofont { FandolFang-Regular } [ Extension = .otf ] % \end{macrocode} % % XITS��� % \begin{macrocode} \setmathfont{XITSMath-Regular}[ BoldFont = XITSMath-Bold, Extension = .otf] % \end{macrocode} % % \pkg{listings} ��������� % \begin{macrocode} \lstdefinestyle{style@base} { basewidth = 0.5 em, gobble = 3, lineskip = 3 pt, frame = l, framerule = 1 pt, framesep = 0 pt, xleftmargin = 2 em, xrightmargin = 3 em, escapeinside = {(*}{*)}, breaklines = true, basicstyle = \small\ttfamily, keywordstyle = \bfseries\color{njuviolet}, commentstyle = \itshape\color{white!50!gray}, stringstyle = \color{nju-chem-red}, backgroundcolor = \color{white!95!gray} } \lstdefinestyle{style@shell} { style = style@base, rulecolor = \color{njumagenta}, language = bash, alsoletter = {-}, emphstyle = \color{nju-cs-green} } \lstdefinestyle{style@latex} { style = style@base, rulecolor = \color{njublue}, language = [LaTeX]TeX, alsoletter = {*, -, .}, texcsstyle = *\color{njuviolet}, emphstyle = [1]\color{nju-ai-orange}, emphstyle = [2]\color{nju-cs-green}, emphstyle = [3]\bfseries\color{njuyellow} } % \end{macrocode} % % ������������������ % \begin{macrocode} \lstnewenvironment{shellexample}[1][]{% \lstset{style=style@shell, #1}}{} \lstnewenvironment{latexexample}[1][]{% \lstset{style=style@latex, #1}}{} % \end{macrocode} % % % \subsubsection{������������������} % % ��������������� guard ������������������������������ % ��������� \cls{ctxdoc} ������������������������������������ % % \begin{macrocode} \colorlet { at@guard } { njuviolet } \definecolor { angle@guard } { gray } { 0.7 } \definecolor { star@guard } { rgb } { 0.8 , 0 , 0 } \definecolor { u@guard } { HTML } { 5463FF } \definecolor { g@guard } { HTML } { 2B7A0B } \definecolor { p@guard } { HTML } { FF1818 } \definecolor { c@guard } { HTML } { FFC300 } % \end{macrocode} % % \begin{variable}{\c@@_module_color_prop} % ������ guard ��������������������������� % \begin{macrocode} \prop_const_from_keyval:Nn \c@@_module_color_prop { def-u = u@guard, def-g = g@guard, def-p = p@guard } % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_set_module_color:n} % % \begin{macrocode} \cs_new:Npn \@@_set_module_color:Nn #1#2 { \prop_get:NnNF \c@@_module_color_prop {#2} #1 { \tl_set:Nn #1 { c@guard } } \exp_args:NV \color #1 #2 } \cs_new:Npn \@@_set_module_color:n { \@@_set_module_color:Nn \l_tmpa_tl } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_module_angle:Nn} % ��������������������������� guard ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_module_angle:Nn #1#2 { \group_begin: \color { angle@guard } \ttfamily \textlangle \group_end: \group_begin: \sffamily #2 \group_end: \group_begin: \color { angle@guard } #1 \ttfamily \textrangle \group_end: } % \end{macrocode} % \end{macro} % % \begin{macro}{\__ctxdoc_module_angle:n} % ��������� % \begin{macrocode} \cs_set:Npn \__ctxdoc_module_angle:n { \@@_module_angle:Nn \c_empty_tl } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_colored_module_angle:NN} % % \begin{macrocode} \cs_new_protected:Npn \@@_colored_module_angle:NN #1#2 { \seq_clear:N #2 \seq_map_inline:Nn #1 { \seq_gput_right:Nn #2 { \@@_set_module_color:n {##1} } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_print_module:n} % % \begin{macrocode} \cs_new_protected:Npn \@@_print_module:n #1 { \@@_colored_module_angle:NN \l_tmpa_seq \l_tmpb_seq \bool_lazy_or:nnTF { \str_if_empty_p:n {#1} } { \int_compare_p:n { \seq_count:N \l_tmpb_seq = 1 } } { \str_clear:N \l_tmpa_str \str_clear:N \l_tmpb_str } { \str_set:Nn \l_tmpa_str { ( } \str_set:Nn \l_tmpb_str { ) } } \@@_module_angle:Nn \l_tmpb_str { \color { star@guard } #1 \color { angle@guard } \l_tmpa_str \seq_use:Nn \l_tmpb_seq { \color { angle@guard } \orbar } } } % \end{macrocode} % \end{macro} % % % \begin{macro}{\@@_split_pm:n,\@@_split_pm:V} % ������������������ guard ��������� % \begin{macrocode} \cs_new:Npn \@@_split_pm:n { \seq_set_split:Nnn \l_tmpa_seq { | } } \cs_generate_variant:Nn \@@_split_pm:n { V } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_split_m:n} % % \begin{macrocode} \cs_new_protected_nopar:Npn \@@_split_m:n #1 { \tl_set:Nn \l_tmpa_str {#1} \clist_map_inline:nn { *, /, (, ) } { \str_remove_all:Nn \l_tmpa_str {##1} } \@@_split_pm:V \l_tmpa_str } % \end{macrocode} % \end{macro} % % % \begin{macrocode} \group_begin: \char_set_catcode_active:N \> % \end{macrocode} % % \begin{macro}{\__ctxdoc_module_star:w} % \begin{macrocode} \cs_gset_protected:Npn \__ctxdoc_module_star:w #1 > #2 \q_stop { \__ctxdoc_output_module:nn { \@@_split_m:n {#1} } { \__ctxdoc_module_push:n { \@@_print_module:n { * } } } \__ctxdoc_output_line:n {#2} \__ctxdoc_star_format: } % \end{macrocode} % \end{macro} % % % \begin{macro}{\__ctxdoc_module_slash:w} % \begin{macrocode} \cs_gset_protected:Npn \__ctxdoc_module_slash:w #1 > #2 \q_stop { \__ctxdoc_output_module:nn { \@@_split_m:n {#1} } { \__ctxdoc_module_pop:n { \@@_print_module:n { / } } } \__ctxdoc_output_line:n {#2} \__ctxdoc_slash_format: } % \end{macrocode} % \end{macro} % % % \begin{macro}{\__ctxdoc_module_pm:w} % \begin{macrocode} \cs_gset_protected:Npn \__ctxdoc_module_pm:w #1 > #2 \q_stop { \tex_noindent:D \hbox_overlap_left:n { \__ctxdoc_output_module:nn { \@@_split_pm:n {#1} } { \@@_print_module:n { } } \skip_horizontal:n { \leftskip + \smallskipamount } } \group_begin: \__ctxdoc_pm_format: \__ctxdoc_output_line:n {#2} \group_end: } \group_end: % \end{macrocode} % \end{macro} % % \begin{macro}{\grd,\sgrd,\pgrd} % ������������������������������ guard ��������� % \begin{macrocode} \NewDocumentCommand \grd { m } { \__ctxdoc_module_angle:n { \color { njuviolet } #1 } } \NewDocumentCommand \sgrd { m } { \__ctxdoc_module_angle:n { \color { star@guard } * \color{ c@guard } #1 } } \NewDocumentCommand \pgrd { m } { \__ctxdoc_module_angle:n { \color { #1 @guard } def- #1 } } % \end{macrocode} % \end{macro} % % \subsubsection{������������} % % \begin{macro}{\@@_output_line:} % \cls{ctxdoc} ��� \file{.dtx} ������������������������������������ % \cs{l__ctxdoc_verbatim_line_tl}��������������� \pkg{codehigh} ��������������������� % ��������������������������������������������������������������������������������������� |^^M|��� % ��������������������������������������������������������������������������������������� % \begin{macrocode} \cs_generate_variant:Nn \tl_remove_once:Nn { NV } \cs_set_protected_nopar:Npn \@@_output_line:N #1 { \tex_noindent:D \__ctxdoc_replace_at_at:N #1 \tl_remove_once:NV #1 \c__ctxdoc_active_cr_tl \__codehigh_parse_code:nN { latex / latex3 } #1 \tex_par:D } % \end{macrocode} % \end{macro} % % \begin{macro}{\__ctxdoc_output_line:} % ��� \XeTeX{} ������������\pkg{codehigh} ��������� \pkg{l3regex} ��������������������������������� % ��������������������������������������� % \begin{macrocode} \bool_if:NT \g_@@_codehigh_bool { \cs_set:Npn \__ctxdoc_output_line: { \@@_output_line:N \l__ctxdoc_verbatim_line_tl } } % \end{macrocode} % \end{macro} % % % \begin{macrocode} %</doc-cls> % \end{macrocode} % % \end{implementation} %