diff options
author | Karl Berry <karl@freefriends.org> | 2022-10-23 20:38:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-10-23 20:38:45 +0000 |
commit | ca6c52a267964f90dad17c9b7e4ddaff34d50b68 (patch) | |
tree | 365007c004eb91804d38a4c9078c3ae793df978c /Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx | |
parent | 393ddc705e6ca75bdda91484fe44e15b8e80a626 (diff) |
njuthesis (23oct22)
git-svn-id: svn://tug.org/texlive/trunk@64793 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx | 1239 |
1 files changed, 677 insertions, 562 deletions
diff --git a/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx b/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx index ced6a7f27e3..b3da068451c 100644 --- a/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx +++ b/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx @@ -20,8 +20,9 @@ % This work consists of the files njuthesis.dtx, % and the derived files njuthesis.ins, % njuthesis.cls, -% njuthesis-undergraduate.def, % njuthesis-graduate.def, +% njuthesis-postdoctoral.def, +% njuthesis-undergraduate.def, % njuthesis.pdf, % and README.md. % @@ -61,7 +62,7 @@ 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 + 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. @@ -118,7 +119,7 @@ To produce the documentation run the original source files ending with %<*!(driver|install)> % ^^A 诚耀百廿,雄创一流 % ^^A 南京大学一百二十周年华诞邀您共襄盛举! -%<+!driver>\GetIdInfo $Id: njuthesis.dtx 1.0.0 2022-08-08 14:50:00 +%<+!driver>\GetIdInfo $Id: njuthesis.dtx 1.1.0 2022-10-23 12:30:00 %<+!driver> +0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$ %<class> {Thesis template for Nanjing University} %<class>\ProvidesExplClass{njuthesis} @@ -134,15 +135,17 @@ To produce the documentation run the original source files ending with %<*driver> \ProvidesFile{njuthesis.dtx} \documentclass[fontset=fandol]{ctxdoc} -\usepackage{listings,njuvisual,tabularray,unicode-math,zhlineskip} +\usepackage{listings,njuvisual,tabularray,unicode-math,xeCJKfntef,zhlineskip} \usepackage[firstpage=true]{background} \backgroundsetup{ contents={\njuemblem[white!85!gray]{22cm}{!}}, scale=1, angle=0, hshift=-4cm } \definecolor{olgreen}{HTML}{138a07} +\renewcommand\emph[1]{\CJKunderdot[textformat=\itshape]{#1}} \newcommand\olbutton[1]{\textcolor{olgreen}{\bfseries #1}} \newcommand\tikzlogo{Ti\emph{k}Z} +\newcommand\OPT[1]{\textcolor{njuyellow}{\bfseries#1}} \hypersetup{ pdftitle = { The njuthesis class - @@ -216,7 +219,8 @@ To produce the documentation run the original source files ending with alsoletter = {*, -, .}, texcsstyle = *\color{njuviolet}, emphstyle = [1]\color{nju-ai-orange}, - emphstyle = [2]\color{nju-cs-green} + emphstyle = [2]\color{nju-cs-green}, + emphstyle = [3]\bfseries\color{njuyellow} } \lstnewenvironment{shellexample}[1][]{% \lstset{style=style@shell, #1}}{} @@ -351,7 +355,7 @@ To produce the documentation run the original source files ending with % \thanks{E-mail: \href{mailto:git+nju-lug-email-3104-issue-@yaoge123.cn} % {git+nju-lug-email-3104-issue-@yaoge123.cn}}} % -% \date{v1.0.0 \quad 2022-08-08} +% \date{v1.1.0 \quad 2022-10-23} % % \changes{v0.1}{2021/09/04}{开始开发。} % \changes{v0.2}{2021/09/07}{初步搭建了可用的模板。} @@ -389,17 +393,17 @@ To produce the documentation run the original source files ending with % \maketitle % % \begin{abstract} -% 南京大学学位论文 \LaTeX 模板 \cls{njuthesis} 基于本科生院的论文撰写 -% 规范制作,同时参考研究生院提供的硕士、博士学位材料包,用于生成符合南京大学学 -% 位论文排版要求和相应的国家规范、行业标准的学位论文,旨在为同学提供毕业论文书 -% 写的方便。 +% \cls{njuthesis} 是制作南京大学本科生毕业论文、研究生学位论文、博士后出站报告的 +% \LaTeX 文档类。本模板基于本科生院的论文撰写规范制作,同时参考研究生院提供的硕士、 +% 博士学位材料包,用于生成符合南京大学排版要求和相应的国家规范、行业标准的学位论 +% 文,力求通过 \LaTeX3 语法实现清晰的实现逻辑、较高的可定制性以及友好的用户接口。 % \end{abstract} % % \def\abstractname{Abstract} % \begin{abstract} % The \cls{njuthesis} class is intended for typesetting Nanjing University % dissertations with \LaTeX, providing support for bachelor, master, -% and doctoral thesis. +% doctoral theses as well as postdoctoral reports. % \end{abstract} % % \vspace{2cm} @@ -652,6 +656,7 @@ To produce the documentation run the original source files ending with % \file{njuthesis-sample.bib} & 示例参考文献列表 \\ % \file{njuthesis-sample.tex} & 示例文档,不妨以此为基础撰写论文 \\ % \file{njuthesis-graduate.def} & 研究生参数配置文件 \\ +% \file{njuthesis-postdoctoral.def} & 博士后参数配置文件 \\ % \file{njuthesis-undergraduate.def} & 本科生参数配置文件 \\ % \file{README.md} & 自述文件 \\ % \bottomrule @@ -829,7 +834,7 @@ To produce the documentation run the original source files ending with % \begin{description} % \item[Perl] 一般预装于 macOS 和 Linux,而 Windows 用户需要单独安装 % \href{https://strawberryperl.com/}{Strawberry Perl}。 -% \item[\pkg{latexmk}] 如果终端找不到 |latexmk| 命令,需使用包管理器单独安装。 +% \item[\normalfont\pkg{latexmk}] 如果终端找不到 |latexmk| 命令,需使用包管理器单独安装。 % \end{description} % % 该命令的使用方法为 @@ -960,15 +965,15 @@ To produce the documentation run the original source files ending with % \subsubsection{学位信息} % \begin{function}[added=2021-09-07,updated=2022-07-23]{type} % \begin{syntax} -% type = <(bachelor)|master|doctor|postdoc> +% \OPT{type} = <(bachelor)|master|doctor|postdoc> % \end{syntax} -% 选择毕业论文模板类型,这将决定模板整体的外观。 -% 可选值分别为学士(本科生)、硕士研究生和博士研究生,默认为学士。 +% 选择毕业论文模板类型,这将决定模板整体的外观。可选值分别为 +% 学士(本科生)、硕士研究生、博士研究生和博士后,默认为学士。 % \end{function} % % \begin{function}[added=2021-09-07,updated=2022-07-01]{degree} % \begin{syntax} -% degree = <(academic)|professional> +% \OPT{degree} = <(academic)|professional> % \end{syntax} % 选择研究生的学位类型。可选值分别学术型和专业型,默认为学术型。 % \end{function} @@ -978,7 +983,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2021-09-07,updated=2022-07-05]{nl-cover} % \begin{syntax} -% nl-cover = <\TFF> +% \OPT{nl-cover} = <\TFF> % \end{syntax} % 是否使用国家图书馆封面,默认关闭。 % \end{function} @@ -988,7 +993,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[updated=2022-01-06]{decl-page} % \begin{syntax} -% decl-page = <\TFF> +% \OPT{decl-page} = <\TFF> % \end{syntax} % 是否需要自动生成声明页面,默认关闭。 % \end{function} @@ -1009,7 +1014,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-01-14]{oneside,twoside} % \begin{syntax} -% <oneside|(twoside)> +% <\OPT{oneside}|(\OPT{twoside})> % \end{syntax} % 开启单面或双面模式,默认为双面模式。 % \end{function} @@ -1022,7 +1027,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2021-12-15]{draft} % \begin{syntax} -% draft = <\TFF> +% \OPT{draft} = <\TFF> % \end{syntax} % 是否开启草稿模式,默认关闭。 % \end{function} @@ -1042,9 +1047,9 @@ To produce the documentation run the original source files ending with % 宏包的代码环境不会显示内容,具体效果需要参照各个宏包的说明文档。 % 如需抵消草稿模式的影响,请使用 \opt{final} 选项载入相关宏包。 % -% \begin{function}[added=2022-04-19,updated=2022-07-04]{anonymous} +% \begin{function}[added=2022-04-19,updated=2022-09-26]{anonymous} % \begin{syntax} -% anonymous = <\TFF> +% \OPT{anonymous} = <\TFF> % \end{syntax} % 是否开启盲审模式。 % \end{function} @@ -1054,6 +1059,7 @@ To produce the documentation run the original source files ending with % \item 不显示校名校徽图片 % \item 不显示“南京大学”字样 % \item 不显示作者、导师等基本信息 +% \item 不显示声明页、致谢页 % \end{itemize} % % @@ -1068,31 +1074,31 @@ To produce the documentation run the original source files ending with % footmisc, % unicode-math} % \begin{syntax} -% biblatex = <\TTF> -% cleveref = <\TTF> -% ntheorem = <\TTF> -% enumitem = <\TTF> -% footmisc = <\TTF> -% unicode-math = <\TTF> +% \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} -% <minimal> +% <\OPT{minimal}> % \end{syntax} % 最小化模式,禁用所有上述宏包。 % \end{function} % % 本模板内置了一系列宏包以进行功能扩展。这些宏包为: % \begin{description} -% \item[\pkg{biblatex}] 复杂参考文献数据的处理。 -% \item[\pkg{cleveref}] 按来源类型自动处理引用标签。 -% \item[\pkg{ntheorem}] 定理类环境定制。 -% \item[\pkg{enumitem}] 列表环境样式定制。 -% \item[\pkg{footmisc}] 脚注样式定制。 -% \item[\pkg{unicode-math}] 支持 Unicode 数学字体。 +% \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} % % 在某些情况下,这些宏包会与旧有的经验方法冲突,可以使用上述选项在模板 @@ -1102,7 +1108,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-02-23]{config} % \begin{syntax} -% config = \Arg{文件} +% \OPT{config} = \Arg{文件} % \end{syntax} % 配置文件路径。 % \end{function} @@ -1118,8 +1124,8 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2021-09-07,updated=2021-12-18]{cjk-font,latin-font} % \begin{syntax} -% cjk-font = <win|mac|fandol|founder|noto|source|none> -% latin-font = <win|mac|gyre|none> +% \OPT{cjk-font} = <win|mac|fandol|founder|noto|source|none> +% \OPT{latin-font} = <win|mac|gyre|none> % \end{syntax} % 手动指定字体。 % \end{function} @@ -1202,18 +1208,19 @@ To produce the documentation run the original source files ending with % 字体配置。Windows 和 macOS 以外的系统采用 \opt{gyre} 配置。 % % \begin{table}[!htbp] +% \def\TG#1{TG~#1~\TA} % \centering % \begin{talltblr} [ % caption = {西文字体配置}, -% label = {tab:latin-fontset}, +% 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{mac} & Times~New~Roman & Arial & Menlo \\ -% \opt{gyre} & TG Termes & TG Heros & TG Cursor \\ +% \opt{win} & Times~New~Roman & Arial & Courier~New \\ +% \opt{mac} & Times~New~Roman & Arial & Menlo \\ +% \opt{gyre} & \TG{Termes} & \TG{Heros} & \TG{Cursor} \\ % \bottomrule % \end{talltblr} % \end{table} @@ -1223,39 +1230,40 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-07-02]{math-font} % \begin{syntax} -% math-font=<asana|cambria|fira|garamond|lm|...|termes|xits|none> +% \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}。 +% 本模板默认采用 \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}, +% 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{stix} & STIX Math & Times 风格 \\ -% \opt{bonum} & TG Bonum Math \TblrNote{a} & \\ -% \opt{dejavu} & TG DejaVu Math \TblrNote{a} & DejaVu 风格 \\ -% \opt{pagella} & TG Pagella Math \TblrNote{a} & Palatino 风格 \\ -% \opt{schola} & TG Schola Math \TblrNote{a} & \\ -% \opt{termes} & TG Termes Math \TblrNote{a} & Times 风格 \\ -% \opt{xits} & XITS Math \TblrNote{b} & 基于 STIX,Times 风格 \\ +% \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} @@ -1264,7 +1272,7 @@ To produce the documentation run the original source files ending with % % 本节提及的字库中,中文字库只有方正书宋、方正黑体、方正楷体、方正仿宋、 % 两种思源字体和四种Fandol字体能够\emph{免费商用}; -% 英文字库中只有 Times New Roman、XITS 和三种 \TeX Gyre字体能够\emph{免费商用}。 +% 英文字库中只有 Times New Roman、XITS 和三种 \TeX~Gyre字体能够\emph{免费商用}。 % 因此,若需要将本模板用于商业相关的活动,请咨询专业人士。 % % @@ -1280,49 +1288,53 @@ To produce the documentation run the original source files ending with % 根据可选参数填写方式不同,\tn{njusetup} 共有四种等效的使用方式, % 可以根据实际情况进行灵活选择。 % -% 在键路径留空时,为最基础的用法。此时设置项的参数是一个使用英文 -% 半角逗号分隔的键值列表,通常形如 \meta{key}|=|\meta{value}。 +% 在键路径留空时,为最基础的用法。此时设置项的参数是一个使用 +% \emph{英文半角逗号}分隔的键值列表,通常形如 \meta{key}|=|\meta{value}。 % -% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}] +% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}, +% emph={[3]title,author,resource}] % \njusetup{ % info/title = {奇文}, % info/author = {佚名}, -% bib/resource = {ref1.bib, ref1.bib} +% bib/resource = {ref1.bib, ref2.bib} % } % \end{latexexample} % % 以上为最基础的填写方法,可以分组为: % -% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}] +% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}, +% emph={[3]title,author,resource}] % \njusetup{ % info = { % title = {奇文}, % author = {佚名} % }, % bib = { -% resource = {ref1.bib, ref1.bib}, +% resource = {ref1.bib, ref2.bib}, % } % } % \end{latexexample} % % 在键路径填入模块(类)时,只能设定当前模块下的选项。此时参数是键值列表。 % -% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}] +% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}, +% emph={[3]title,author,resource}] % \njusetup[info]{ % title = {奇文}, % author = {佚名} % } % \njusetup[bib]{ -% resource = {ref1.bib, ref1.bib} +% resource = {ref1.bib, ref2.bib} % } % \end{latexexample} % % 在键路径填入具体选项名称时,只能设定该选项的值。 % -% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}] +% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}, +% emph={[3]title,author,resource}] % \njusetup[info/title]{奇文} % \njusetup[info/author]{佚名} -% \njusetup[bib/resource]{ref1.bib, ref1.bib} +% \njusetup[bib/resource]{ref1.bib, ref2.bib} % \end{latexexample} % % @@ -1333,8 +1345,8 @@ To produce the documentation run the original source files ending with % % \begin{function}[updated=2022-01-14]{info/title,info/title*} % \begin{syntax} -% title = \Arg{标题} -% title* = \Arg{英文标题} +% \OPT{title} = \Arg{标题} +% \OPT{title*} = \Arg{英文标题} % \end{syntax} % 题目。由于封面上提供给中文题目的横线长度有限\footnote{单行最长约为15 % 个汉字,建议总长度不超过45字,当然你也可以对照 \ref{subsubsec:modify-length} @@ -1352,8 +1364,8 @@ To produce the documentation run the original source files ending with % % \begin{function}[updated=2021-10-01]{info/keywords,info/keywords*} % \begin{syntax} -% keywords = \Arg{关键词} -% keywords* = \Arg{英文关键词} +% \OPT{keywords} = \Arg{关键词} +% \OPT{keywords*} = \Arg{英文关键词} % \end{syntax} % 关键词列表。关键词之间需要使用英文半角逗号隔开, % 含有空格的关键字需要使用花括号包裹以避免歧义。可以参照下方的填写示例。 @@ -1361,14 +1373,14 @@ To produce the documentation run the original source files ending with % % \begin{function}[updated=2021-10-01]{info/grade} % \begin{syntax} -% grade = \Arg{20XX} +% \OPT{grade} = \Arg{20XX} % \end{syntax} % 年级,推荐格式为“20XX”。 % \end{function} % % \begin{function}[updated=2021-10-01]{info/student-id} % \begin{syntax} -% student-id = \Arg{学号或工号} +% \OPT{student-id} = \Arg{学号或工号} % \end{syntax} % 学号或工号。南京大学本科生为9位数字学号, % 研究生为两位大写字母标识加上数字组成的学号(2022级改为纯数字)。 @@ -1376,55 +1388,55 @@ To produce the documentation run the original source files ending with % % \begin{function}[updated=2021-10-01]{info/author,info/author*} % \begin{syntax} -% author = \Arg{你的名字} -% author* = \Arg{姓名拼音} +% \OPT{author} = \Arg{你的名字} +% \OPT{author*} = \Arg{姓名拼音} % \end{syntax} % 姓名。 % \end{function} % % \begin{function}[updated=2021-10-01]{info/department,info/department*} % \begin{syntax} -% department = \Arg{院系} -% department* = \Arg{院系} +% \OPT{department} = \Arg{院系} +% \OPT{department*} = \Arg{院系} % \end{syntax} % 院系。 % \end{function} % % \begin{function}[updated=2021-10-01]{info/major,info/major*} % \begin{syntax} -% major = \Arg{专业} -% major* = \Arg{专业} +% \OPT{major} = \Arg{专业} +% \OPT{major*} = \Arg{专业} % \end{syntax} % 专业。 % \end{function} % % \begin{function}[updated=2021-10-01]{info/field,info/field*} % \begin{syntax} -% field = \Arg{方向} -% field* = \Arg{方向} +% \OPT{field} = \Arg{方向} +% \OPT{field*} = \Arg{方向} % \end{syntax} % 研究领域。只有研究生存在研究领域的说法,本科生无需填写。 % \end{function} % % \begin{function}[updated=2022-01-12]{info/supervisor,info/supervisor*} % \begin{syntax} -% supervisor = \Arg{导师姓名,职称} -% supervisor* = \Arg{导师英文全称} +% \OPT{supervisor} = \Arg{导师姓名,职称} +% \OPT{supervisor*} = \Arg{导师英文全称} % \end{syntax} % 导师全称。请使用逗号( |,| )分隔导师的中文姓名与职称,英文名则不需添加逗号。 % \end{function} % % \begin{function}[updated=2021-01-12]{info/supervisor-ii,info/supervisor-ii*} % \begin{syntax} -% supervisor-ii = \Arg{第二导师姓名,职称} -% supervisor-ii* = \Arg{第二导师英文全称} +% \OPT{supervisor-ii} = \Arg{第二导师姓名,职称} +% \OPT{supervisor-ii*} = \Arg{第二导师英文全称} % \end{syntax} % 第二导师全称。无第二导师时不填即可。 % \end{function} % % \begin{function}[updated=2022-01-14]{info/submit-date} % \begin{syntax} -% submit-date = \Arg{yyyy-mm-dd} +% \OPT{submit-date} = \Arg{yyyy-mm-dd} % \end{syntax} % 提交日期。中英文日期现在可以由 ISO 日期格式\cite{gb-t-7408-2005} % 的字符串统一生成。如果在等号后留空,则原本中文日期处使用空白的年月日字样; @@ -1433,29 +1445,29 @@ To produce the documentation run the original source files ending with % % \begin{function}[updated=2022-01-14]{info/defend-date} % \begin{syntax} -% defend-date = \Arg{yyyy-mm-dd} +% \OPT{defend-date} = \Arg{yyyy-mm-dd} % \end{syntax} % 答辩日期,只对研究生有效,要求同提交日期。 % \end{function} % % \begin{function}[updated=2022-05-23]{info/confer-date} % \begin{syntax} -% confer-date = \Arg{yyyy-mm-dd} +% \OPT{confer-date} = \Arg{yyyy-mm-dd} % \end{syntax} % 学位授予日期,只用于国家图书馆封面,要求同提交日期。 % \end{function} % % \begin{function}[updated=2022-05-23]{info/bottom-date} % \begin{syntax} -% bottom-date = \Arg{yyyy-mm-dd} +% \OPT{bottom-date} = \Arg{yyyy-mm-dd} % \end{syntax} % 底部日期,只用于国家图书馆封面,要求同提交日期。 % \end{function} % % \begin{function}[updated=2022-05-27]{info/chairman,info/reviewer} % \begin{syntax} -% chairman = \Arg{答辩主席姓名职称} -% reviewer = \Arg{答辩评委姓名职称} +% \OPT{chairman} = \Arg{答辩主席姓名职称} +% \OPT{reviewer} = \Arg{答辩评委姓名职称} % \end{syntax} % 答辩委员会信息,分别为评审委员会主席及成员的姓名加职称,只对研究生有效。 % 评审成员名单以逗号分隔的列表形式存储,填写方法同关键词。 @@ -1465,10 +1477,10 @@ To produce the documentation run the original source files ending with % \begin{function}[updated=2021-10-01]{info/clc,info/secret-level, % info/udc,info/supervisor-contact} % \begin{syntax} -% clc = \Arg{中图分类号} -% secret-level = <不涉密|秘密|机密|绝密> -% udc = \Arg{udc} -% supervisor-contact = \Arg{导师联系方式} +% \OPT{clc} = \Arg{中图分类号} +% \OPT{secret-level} = <不涉密|秘密|机密|绝密> +% \OPT{udc} = \Arg{UDC 分类号} +% \OPT{supervisor-contact} = \Arg{导师联系方式} % \end{syntax} % 国家图书馆封面相关,包括中图分类号、密级、UDC 分类号和导师联系方式。 % \end{function} @@ -1478,10 +1490,12 @@ To produce the documentation run the original source files ending with % % 本科生可以参考如下范例输入个人信息。注意不能有空行。 % -% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info}] +% \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 title in English}, +% title* = {My Awesome Work}, % keywords = {我,就是,充数的,关键词}, % keywords* = {Dummy, Keywords, Here, {it is}}, % grade = {2018}, @@ -1500,10 +1514,12 @@ To produce the documentation run the original source files ending with % % 研究生可以参考如下列表输入个人信息 % -% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info}] +% \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 title in English}, +% title* = {My Awesome Work}, % keywords = {我,就是,充数的,关键词}, % keywords* = {Dummy,Keywords,Here,{it is}}, % grade = {2018}, @@ -1526,7 +1542,8 @@ To produce the documentation run the original source files ending with % % 如果需要国家图书馆封面,还需要加入如下信息 % -% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info}] +% \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}, @@ -1541,10 +1558,11 @@ To produce the documentation run the original source files ending with % % 博士后可以参考如下范例输入个人信息。 % -% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info}] +% \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 title in English}, +% title* = {My Awesome Work}, % keywords = {我,就是,充数的,关键词}, % keywords* = {Dummy, Keywords, Here, {it is}}, % student-id = {189114514}, @@ -1588,8 +1606,8 @@ To produce the documentation run the original source files ending with % % \begin{function}{header/content,header/content*,footer/content,footer/content*} % \begin{syntax} -% content = \{\Arg{位置}\Arg{内容},\Arg{位置}\Arg{内容},...\} -% content* = \{\Arg{位置}\Arg{内容},\Arg{位置}\Arg{内容},...\} +% \OPT{content} = \{\Arg{位置}\Arg{内容},\Arg{位置}\Arg{内容},...\} +% \OPT{content*} = \{\Arg{位置}\Arg{内容},\Arg{位置}\Arg{内容},...\} % \end{syntax} % 页眉页脚的格式与内容设置。带有星号的设置项供单面模式下使用。 % \end{function} @@ -1604,7 +1622,7 @@ To produce the documentation run the original source files ending with % 并将页眉格式设置成五号黑体,奇数页左侧为节名,右侧为页码, % 偶数页左侧为页码,右侧为章名。 % \begin{latexexample}[moretexcs={\njusetup,\sffamily,\njusetformat}, -% emph={[2]header,footer}] +% emph={[2]header,footer},emph={[3]content}] % \njusetup[header/content]{ % { OR } { \thepage }, { OL } { \rightmark }, % { EL } { \thepage }, { ER } { \leftmark } @@ -1639,19 +1657,36 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-08-06]{image/path} % \begin{syntax} -% path = \{\marg{路径1},\marg{路径2},...\} +% \OPT{path} = \{\marg{路径1},\marg{路径2},...\} % \end{syntax} % 图片搜索路径,等效于 \tn{graphicspath}。这个选项仅能设置一次。 % \end{function} % % \subsubsection{脚注} % -% \begin{function}[added=2022-05-01,updated=2022-08-03]{footnote/style} +% \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} -% style = <(plain)|pifont> +% \OPT{hang} = \TTF % \end{syntax} -% 设置脚注编号样式。默认为普通数字,使用 |pifont| -% 选项可修改为带圈数字。单一页面内请尽量避免超过 10 条脚注。 +% 是否进行悬挂缩进。默认为是,缩进宽度为 \qty{1.5}{em}。 % \end{function} % % 脚注样式的调整依赖 \pkg{footmisc}。如果希望使用 \LaTeX 的默认样式, @@ -1678,13 +1713,15 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-07-31]{math/style} % \begin{syntax} -% style = <TeX|ISO|(GB)> +% \OPT{style} = <TeX|ISO|(GB)> % \end{syntax} % 数学符号风格。 % \end{function} % % 默认的国标风格 \opt{GB} 相当于在导言区设置了 -% \begin{latexexample}[moretexcs={\njusetup},emph={[2]math}] +% \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, @@ -1701,7 +1738,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-07-31]{math/integral} % \begin{syntax} -% integral = <upright|slanted> +% \OPT{integral} = <upright|slanted> % \end{syntax} % 积分号的正/斜体。 % 该选项需要字体的支持,目前仅限 \opt{xits}、\opt{newcm}。 @@ -1709,7 +1746,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-07-31]{math/integral-limits} % \begin{syntax} -% integral-limits = <\TF> +% \OPT{integral-limits} = <\TF> % \end{syntax} % 积分号上下限的位置,可选:\opt{true}(在上下)、\opt{false}(在右侧)。 % 这个设置只影响行间公式,行内公式统一居右侧,不受影响。 @@ -1717,7 +1754,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-07-31]{math/less-than-or-equal} % \begin{syntax} -% less-than-or-equal = <slanted|horizontal> +% \OPT{less-than-or-equal} = <slanted|horizontal> % \end{syntax} % 小于等于号和大于等于号的字形。 % 这将控制 \tn{le}、\tn{ge}、\tn{leq} 和 \tn{geq} 的符号是 @@ -1726,7 +1763,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-07-31]{math/math-ellipsis} % \begin{syntax} -% math-ellipsis = <centered|lower> +% \OPT{math-ellipsis} = <centered|lower> % \end{syntax} % 省略号 \tn{dots} 的样式,可选:\opt{centered}(按照中文的习惯固定居中)、 % \opt{lower}(取决于前后符号的位置)。 @@ -1735,28 +1772,28 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-07-31]{math/partial} % \begin{syntax} -% partial = <upright|italic> +% \OPT{partial} = <upright|italic> % \end{syntax} % 偏微分符号的正/斜体。 % \end{function} % % \begin{function}[added=2022-07-31]{math/real-part} % \begin{syntax} -% real-part = <roman|fraktur> +% \OPT{real-part} = <roman|fraktur> % \end{syntax} % 实部 \tn{Re} 和虚部 \tn{Im} 的字体。 % \end{function} % % \begin{function}[added=2022-07-31]{math/vector} % \begin{syntax} -% vector = <boldfont|arrow> +% \OPT{vector} = <boldfont|arrow> % \end{syntax} % 向量的表示方法,可选粗斜体或箭头。 % \end{function} % % \begin{function}[added=2022-07-31]{math/uppercase-greek} % \begin{syntax} -% uppercase-greek = <upright|italic> +% \OPT{uppercase-greek} = <upright|italic> % \end{syntax} % 大写希腊字母的正/斜体。 % 有限增量符号 $\increment x$ 固定使用正体,推荐使用 \tn{increment} 表示。 @@ -1787,28 +1824,28 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-04-21]{theorem/style} % \begin{syntax} -% style = <(plain)|break|change|margin|empty|...> +% \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} -% header-font = \meta{头部字体格式} +% \OPT{header-font} = \meta{头部字体格式} % \end{syntax} % 定理头部字体格式。等效于 \tn{theoremheaderfont}\marg{格式}。 % \end{function} % % \begin{function}[added=2022-04-21]{theorem/body-font} % \begin{syntax} -% body-font = \meta{内部字体格式} +% \OPT{body-font} = \meta{内部字体格式} % \end{syntax} % 定理内部字体格式。等效于 \tn{theorembodyfont}\marg{格式}。 % \end{function} % % \begin{function}[added=2022-04-21]{theorem/qed-symbol} % \begin{syntax} -% qed-symbol = \meta{证毕符号} +% \OPT{qed-symbol} = \meta{证毕符号} % \end{syntax} % 证毕符号。等效于 \tn{theoremsymbol}\marg{符号}。默认为空心方块(\mdlgwhtsquare)。 % 禁用 \pkg{unicode-math} 时为实心黑色方块(\rule{1ex}{1ex})。 @@ -1816,7 +1853,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-04-21]{theorem/counter} % \begin{syntax} -% counter = <part|(chapter)|section|...> +% \OPT{counter} = <part|(chapter)|section|...> % \end{syntax} % 定理计数器范围。 % \end{function} @@ -1824,7 +1861,7 @@ To produce the documentation run the original source files ending with % 模板的默认设置等效于 % % \begin{latexexample}[moretexcs={\njusetup,\bfseries,\itshape,\mdlgwhtsquare}, -% emph={[2]theorem}] +% emph={[2]theorem},emph={[3]style,header-font,body-font,qed-symbol,counter}] % \njusetup[theorem]{ % style = plain, % header-font = \normalfont \bfseries , @@ -1838,7 +1875,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-08-05]{theorem/type} % \begin{syntax} -% type = \{\marg{环境名,类型标识} \marg{头名称},...\} +% \OPT{type} = \{\marg{环境名,类型标识} \marg{头名称},...\} % \end{syntax} % 需要定义的定理类型列表。在可选的 \meta{类型标识} 中,含有\emph{星号}表示 % 需要编号,含有\emph{加号}需要证毕符号。该选项存储的是用来定义环境的参数, @@ -1846,28 +1883,29 @@ To produce the documentation run the original source files ending with % \end{function} % % \opt{theorem/type} 初始定义的环境列表如表~\ref{tab:mathenv} 所示。 -% 其中证明环境较为特殊,不编号且会在结尾添加证毕符号。 % 这些环境并没有预先创建,使用方法见下面的例子。 % % \begin{table}[htbp] % \centering -% \caption{预置的数学定理环境} -% \label{tab:mathenv} -% \begin{tabular}{cc|cc} +% \begin{talltblr} [ +% caption = {预置的数学定理环境}, +% label = {tab:mathenv}, +% note{a} = {证明环境较为特殊,不编号且会在结尾添加证毕符号。} ] +% { colspec = {cc|cc} } % \toprule -% \bf 标签 & \bf 名称 & \bf 标签 & \bf 名称 \\ +% 标签 & 名称 & 标签 & 名称 \\ % \midrule -% axiom & 公理 & lemma & 引理 \\ -% corollary & 推论 & proof & 证明 \\ -% definition & 定义 & theorem & 定理 \\ -% example & 例 & & \\ +% axiom & 公理 & lemma & 引理 \\ +% corollary & 推论 & proof \TA & 证明 \\ +% definition & 定义 & theorem & 定理 \\ +% example & 例 & & \\ % \bottomrule -% \end{tabular} +% \end{talltblr} % \end{table} % % \begin{function}[added=2022-08-05]{theorem/define} % \begin{syntax} -% <define> +% <\OPT{define}> % \end{syntax} % 创建定理环境。 % \end{function} @@ -1880,9 +1918,9 @@ To produce the documentation run the original source files ending with % 宋体,定义了 \env{exercise} 和 \env{solution} 两种定理环境,后者没有编号。 % % \begin{latexexample}[moretexcs={\njusetup,\normalfont}, -% emph={[2]theorem}] +% emph={[2]theorem},emph={[3]define,body-font,type}] % \njusetup[theorem]{ -% define, +% define , % body-font = \normalfont , % type = { % { {exercise} {习题} }, @@ -1897,9 +1935,9 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-07-31]{label-sep/figure,label-sep/table,label-sep/equation} % \begin{syntax} -% figure = \meta{符号} -% table = \meta{符号} -% equation = \meta{符号} +% \OPT{figure} = \meta{符号} +% \OPT{table} = \meta{符号} +% \OPT{equation} = \meta{符号} % \end{syntax} % 图片、表格、公式编号中的连接符样式,默认为短横线(en dash)。 % \end{function} @@ -1921,7 +1959,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2021-12-19]{bib/style} % \begin{syntax} -% style = <(numeric)|author-year|\meta{自定义样式}> +% \OPT{style} = <(numeric)|author-year|\meta{自定义样式}> % \end{syntax} % 参考文献样式。可选顺序编码制 \opt{numeric} 和著者-出版年制 \opt{author-year}, % 或自行填入任意其他 \pkg{biblatex} 样式。默认为顺序编码制。 @@ -1945,7 +1983,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-02-15]{bib/option} % \begin{syntax} -% option = \meta{选项列表} +% \OPT{option} = \meta{选项列表} % \end{syntax} % 待传入 \pkg{biblatex} 宏包的额外选项列表。 % \end{function} @@ -1955,7 +1993,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2021-12-19]{bib/resource} % \begin{syntax} -% resource = \Arg{文件} +% \OPT{resource} = \Arg{文件} % \end{syntax} % 参考文献数据源。类似于 \tn{addbibresource} 命令,但可以使用逗号分隔的 % 列表形式。必须使用带扩展名(\file{.bib})的完整文件名。 @@ -1973,7 +2011,8 @@ To produce the documentation run the original source files ending with % 可以参考如下范例进行参考文献设置。 % 其中 \opt{bib/option} 的内容旨在关闭部分不需显示的文献信息, % 并采取仅首字母大写的作者姓名格式,可根据需要使用。 -% \begin{latexexample}[moretexcs={\njusetup},emph={[2]bib}] +% \begin{latexexample}[moretexcs={\njusetup},emph={[2]bib}, +% emph={[3]style,resource,option}] % \njusetup[bib]{ % style = author-year, % resource = {njuthesis-sample.bib}, @@ -2050,16 +2089,15 @@ To produce the documentation run the original source files ending with % note{a} = {在此样式下 \tn{parencite} 效果等同于 \tn{cite}。} ] % { colspec = {cll} } % \toprule -% 引用方式 & 命令 & 排版效果 \\ +% 引用方式 & 命令 & 排版效果 \\ % \midrule -% 单篇文献 & \tn{cite}\TblrNote{a} & -% 作者加年份用括号包围可设置页码 \\ -% 多篇文献 & \tn{cite} & 分号隔开 \\ -% 标注页码 & \tn{pagescite} & 作者加年份用括号包围自动页码 \\ -% 标注年份 & \tn{yearcite} & 用括号包围的年份 \\ -% 标注年份、页码 & \tn{yearpagescite} & 提供年份用括号包围自动页码 \\ -% 标注作者 & \tn{textcite} & 作者为主语加加括号包围年份 \\ -% 完整脚注 & \tn{footfullcite} & 脚注方式 \\ +% 单篇文献 & \tn{cite} \TA & 作者加年份用括号包围可设置页码 \\ +% 多篇文献 & \tn{cite} & 分号隔开 \\ +% 标注页码 & \tn{pagescite} & 作者加年份用括号包围自动页码 \\ +% 标注年份 & \tn{yearcite} & 用括号包围的年份 \\ +% 标注年份、页码 & \tn{yearpagescite} & 提供年份用括号包围自动页码 \\ +% 标注作者 & \tn{textcite} & 作者为主语加加括号包围年份 \\ +% 完整脚注 & \tn{footfullcite} & 脚注方式 \\ % \bottomrule % \end{talltblr} % \end{table} @@ -2111,8 +2149,8 @@ To produce the documentation run the original source files ending with % \begin{function}[added=2021-12-23,updated=2022-08-06]{ % image/nju-emblem,image/nju-name} % \begin{syntax} -% nju-emblem = \Arg{文件} -% nju-name = \Arg{文件} +% \OPT{nju-emblem} = \Arg{文件} +% \OPT{nju-name} = \Arg{文件} % \end{syntax} % 校名、校徽图片文件路径。 % \end{function} @@ -2141,7 +2179,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-02-04,updated=2022-07-31]{abstract/toc-entry} % \begin{syntax} -% toc-entry = <\TTF> +% \OPT{toc-entry} = <\TTF> % \end{syntax} % 是否将摘要条目插入目录,默认开启。 % 关闭此选项后摘要页将不会出现在目录中,仅保留其 PDF 书签。 @@ -2149,7 +2187,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-03-26,updated=2022-07-31]{abstract/title-style} % \begin{syntax} -% title-style = <(strict)|centered|natural> +% \OPT{title-style} = <(strict)|centered|natural> % \end{syntax} % 选择研究生摘要标题样式。 % 默认为严格模式(\opt{strict}),即完全模仿材料包要求。 @@ -2191,7 +2229,7 @@ To produce the documentation run the original source files ending with % % \begin{function}[added=2022-08-08]{tableofcontents/dotline} % \begin{syntax} -% dotline = <chapter|(section)> +% \OPT{dotline} = <chapter|(section)> % \end{syntax} % 目录中的引导线设置。选择 \opt{chapter} 会为章标题后添加引导线。 % \end{function} @@ -2200,7 +2238,7 @@ To produce the documentation run the original source files ending with % tableofcontents/toc-entry,listoffigures/toc-entry, % listoftables/toc-entry} % \begin{syntax} -% toc-entry = <\TTF> +% \OPT{toc-entry} = <\TTF> % \end{syntax} % 是否在目录中显示目录自身的条目,默认开启。关闭后目录、 % 插图目录和表格目录将不会出现在目录中,仅保留其 PDF 书签。 @@ -2208,7 +2246,7 @@ To produce the documentation run the original source files ending with % \end{function} % % 如果仅需要禁用插图目录和表格目录的条目,可以这样设置 -% \begin{latexexample}[moretexcs={\njusetup}, +% \begin{latexexample}[moretexcs={\njusetup},emph={[3]toc-entry}, % emph={[2]tableofcontents,listoffigures,listoftables}] % \njusetup{ % tableofcontents/toc-entry = true, % 仅作展示,无需手动启用 @@ -2236,7 +2274,8 @@ To produce the documentation run the original source files ending with % \subsubsection{致谢页} % % \DescribeEnv{acknowledgement} -% 同前言,使用 \env{acknowledgement} 环境。 +% 使用 \env{acknowledgement} 环境生成致谢页,附带有相应目录条目。 +% 在开启盲审模式时,仅显示该目录条目。 % % \begin{latexexample}[emph={[1]acknowledgement}] % \begin{acknowledgement} @@ -2421,6 +2460,9 @@ To produce the documentation run the original source files ending with % \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},用于在对应引擎下绘制下划线。 @@ -2465,8 +2507,8 @@ To produce the documentation run the original source files ending with % \bibitem{install-latex-guide-zh-cn} % 王然. % \newblock \textit{一份简短的关于 \LaTeX 安装的介绍} [EB/OL]. -% \newblock version 2021.12.1, -% \newblock (2021-12-01) +% \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} % @@ -2546,8 +2588,8 @@ To produce the documentation run the original source files ending with % \bibitem{biblatex-gb7714-2015} % 胡振震. % \newblock \textit{符合 GB/T 7714-2015 标准的 biblatex 参考文献样式} [EB/OL]. -% \newblock version 1.1b, -% \newblock (2021-12-11) +% \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} % @@ -2559,6 +2601,14 @@ To produce the documentation run the original source files ending with % \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]. @@ -2763,8 +2813,8 @@ To produce the documentation run the original source files ending with % % \subsection{定义变量} % -% 本模板的变量名称通式为 |\|\meta{作用域}|_@@_|\meta{族}|_|\meta{描述}|_|\meta{类型} -% (出现在源代码中)或 |\|\meta{作用域}|__nju_|\meta{族}|_|\meta{描述}|_|\meta{类型} +% 本模板的变量名称通式为 \cs[no-index]{\meta{作用域}_@@_\meta{族}_\meta{描述}_\meta{类型}} +% (出现在源代码中)或 \cs[no-index,replace=false]{\meta{作用域}_@@_\meta{族}_\meta{描述}_\meta{类型}} % (出现在文档中)。作用域为单个字母,|l| 代表局部变量,|g| 代表全局变量,|c| 代表常 % 量。最后一个下划线后的内容指示其类型,但引擎不会根据名称检查变量类型。 % @@ -2788,38 +2838,32 @@ To produce the documentation run the original source files ending with % \end{macrocode} % \end{variable} % -% \begin{variable}{ -% \g_@@_info_degree_int, -% \g_@@_info_type_int} -% 用于存储学位类型的变量。 +% \begin{variable}{\g_@@_info_type_int} +% 用于存储论文类型的变量。 % \begin{macrocode} -\int_new:N \g_@@_info_degree_int \int_new:N \g_@@_info_type_int % \end{macrocode} % \end{variable} % -% \begin{variable}{ -% \g_@@_info_degree_tl, -% \g_@@_info_type_en_tl} -% 用于存储学位名称的变量。 +% \begin{variable}{\g_@@_opt_academic_bool} +% 用于判断学术型或专业型学位的变量。 % \begin{macrocode} -\tl_new:N \g_@@_info_degree_tl -\tl_new:N \g_@@_info_type_en_tl +\bool_new:N \g_@@_opt_academic_bool % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_opt_twoside_bool} % 定义用于判断是否使用双面模式的变量,初始值为使用双面模式。 % \begin{macrocode} -\bool_new:N \g_@@_opt_twoside_bool +\bool_new:N \g_@@_opt_twoside_bool \bool_set_true:N \g_@@_opt_twoside_bool % \end{macrocode} % \end{variable} % -% \begin{variable}{\l_@@_second_supvbool} +% \begin{variable}{\g_@@_opt_second_supv_bool} % 定义用于判断是否有第二导师的变量。 % \begin{macrocode} -\bool_new:N \l_@@_second_supvbool +\bool_new:N \g_@@_opt_second_supv_bool % \end{macrocode} % \end{variable} % @@ -2856,7 +2900,6 @@ To produce the documentation run the original source files ending with % 是否使用独立的字体文件。 % \begin{macrocode} \bool_new:N \g_@@_font_path_bool -\bool_gset_false:N \g_@@_font_path_bool % \end{macrocode} % \end{variable} % @@ -2867,23 +2910,6 @@ To produce the documentation run the original source files ending with % \end{macrocode} % \end{variable} % -% \begin{variable}{\g_@@_thm_type_clist} -% 默认定理类型、头名称,以及是否需要编号和证毕符号。 -% \begin{macrocode} -\clist_new:N \g_@@_thm_type_clist -\clist_gset:Nn \g_@@_thm_type_clist - { - { axiom } { 公理 }, - { corollary } { 推论 }, - { definition } { 定义 }, - { example } { 例 }, - { lemma } { 引理 }, - { proof, *+ } { 证明 }, - { theorem } { 定理 } - } -% \end{macrocode} -% \end{variable} -% % \begin{variable}{\c_@@_today_tl} % 编译当天日期,格式为 |yyyy-mm-dd|。 % \begin{macrocode} @@ -2896,18 +2922,13 @@ To produce the documentation run the original source files ending with % \end{macrocode} % \end{variable} % -% \begin{variable}{ -% \c_@@_name_type_clist, -% \c_@@_name_type_en_clist, -% \c_@@_name_degree_clist} +% \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 } -\clist_const:Nn \c_@@_name_degree_clist - { \c_empty_tl, 专业 } % \end{macrocode} % \end{variable} % @@ -2922,27 +2943,29 @@ To produce the documentation run the original source files ending with % \end{macrocode} % \end{variable} % -% \begin{variable}{ -% \c_@@_name_anon_clist, -% \c_@@_name_anon_en_clist, -% \c_@@_name_anonlist_clist} -% 盲审模式下不显示的个人信息项。 +% \begin{variable}{\c_@@_name_anon_clist,\c_@@_name_anon_en_clist} +% 盲审模式下不显示的个人信息键名。 % \begin{macrocode} \clist_const:Nn \c_@@_name_anon_clist { - author, chairman, clc, dept, email, field, grade, - id, major, secretlv, supvcont, udc + author, chairman, email, student-id, reviewer, + supervisor-contact, supervisor, supervisor-ii } \clist_const:Nn \c_@@_name_anon_en_clist - { author, dept, field, major, supv, supvii } -\clist_const:Nn \c_@@_name_anonlist_clist - { reviewer, supv, supvii } + { 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}{\@@_quad:,\@@_qquad:} % 等价于 \LaTeXe{} 中的 \tn{quad} 和 \tn{qquad}。 % \begin{macrocode} @@ -3041,7 +3064,7 @@ To produce the documentation run the original source files ending with % \end{macro} % % \begin{macro}{\@@_box_ulined_info:Nn} -% 以上盒子只用来打印 \cs{g_@@_info_\meta{描述}_tl} 变量。 +% 以上盒子只用来打印 \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 } } @@ -3062,13 +3085,13 @@ To produce the documentation run the original source files ending with \cs_new_protected:Npn \@@_box_spread:NNn #1#2#3 { \mode_leave_vertical: - \@@_get_width:Nn \l_@@_tmpa_dim { #2 #3 } + \@@_get_width:Nn \l_@@_tmp_skip { #2 #3 } \hbox_to_wd:nn { #1 } { - \dim_compare:nTF { \l_@@_tmpa_dim > #1 } + \dim_compare:nTF { \l_@@_tmp_skip > #1 } { \tex_hfil:D \scalebox - { \dim_to_decimal_in_unit:nn { #1 } { \l_@@_tmpa_dim } } + { \dim_to_decimal_in_unit:nn { #1 } { \l_@@_tmp_skip } } [ 1.0 ] { #2 #3 } \tex_hfil:D } { #2 \tl_map_inline:nn { #3 } { ##1 \tex_hfil:D } \tex_unskip:D } @@ -3079,7 +3102,7 @@ To produce the documentation run the original source files ending with % \end{macro} % % \begin{macro}{\@@_box_spread_name:Nn,\@@_box_spread_name:NNn} -% 以上盒子只用来打印 \cs{c_@@_name_\meta{描述}_tl} 变量。 +% 以上盒子只用来打印 \cs[no-index]{c_@@_name_\meta{描述}_tl} 变量。 % \begin{macrocode} \cs_new_protected:Npn \@@_box_spread_name:Nn #1#2 { \@@_box_spread:NNv #1 \c_empty_tl { c_@@_name_ #2 _tl } } @@ -3184,9 +3207,9 @@ To produce the documentation run the original source files ending with % \item |dim| 型变量 % \item 文本 |clist| % \end{arguments} -% 当 \cs{l_@@_tmpa_clist} 非空时,弹出最后一个元素赋给 \cs{l_@@_tmpa_tl}, +% 当 \cs{l_@@_tmp_clist} 非空时,弹出最后一个元素赋给 \cs{l_@@_tmpa_tl}, % 获取其长度后与 |#1| 进行比较,二者中较大的那一个将成为 |#1| 的新值。 -% 不断循环,直至 \cs{l_@@_tmpa_clist} 为空。 +% 不断循环,直至 \cs{l_@@_tmp_clist} 为空。 % \begin{macrocode} \cs_new:Npn \@@_get_max_width:NN #1#2 { @@ -3199,55 +3222,53 @@ To produce the documentation run the original source files ending with % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_full_uline:Nn,\@@_full_uline:Nx} +% \begin{macro}{\@@_get_width_print:Nn,\@@_get_width_print:Nv, +% \@@_get_width_print:Nx} % 横跨整页的下划线。 % \begin{arguments} % \item 宽度,|dim| 型变量 % \item 文本 % \end{arguments} -% 先使用 \cs{@@_get_text_width:Nn} 获取文本内容宽度, +% 先使用 \cs{@@_get_width:Nn} 获取文本内容到右边距的宽度, % 该宽度存储在调用的 |dim| 型变量中。随后输出文本内容。 % \begin{macrocode} -\cs_new_protected:Npn \@@_full_uline:Nn #1#2 +\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 \@@_full_uline:Nn { Nx } +\cs_generate_variant:Nn \@@_get_width_print:Nn { Nv } +\cs_generate_variant:Nn \@@_get_width_print:Nn { Nx } % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_uline_entry:Nnnn} +% \begin{macro}{\@@_uline_entry:Nn} % 生成占整页宽度的下划线条目。 % \begin{arguments} % \item 宽度,|dim| 型变量 % \item 文本 -% \item 文本 -% \item 分隔符 % \end{arguments} % \begin{macrocode} -\cs_new_protected:Npn \@@_uline_entry:Nnnn #1#2#3#4 +\cs_new_protected:Npn \@@_uline_entry:Nn #1#2 { - \@@_full_uline:Nx #1 { \@@_name:n { #2 } #4 } - \@@_box_ulined_info:Nn #1 { #3 } + \@@_get_width_print:Nv #1 { c_@@_name_ #2 _tl } + \@@_box_ulined_info:Nn #1 { #2 } } % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_uline_bientry:Nnnn} +% \begin{macro}{\@@_uline_bientry:Nn} % 生成占半页宽度的下划线条目。 % \begin{arguments} % \item 宽度,|dim| 型变量 % \item 文本 -% \item 文本 -% \item 分隔符 % \end{arguments} % \begin{macrocode} -\cs_new_protected:Npn \@@_uline_bientry:Nnnn #1#2#3#4 +\cs_new_protected:Npn \@@_uline_bientry:Nn #1#2 { - \@@_full_uline:Nx #1 { \@@_name:n { #2 } #4 } + \@@_get_width_print:Nv #1 { c_@@_name_ #2 _tl } \dim_sub:Nn #1 { \textwidth / 2 } - \@@_box_ulined_info:Nn #1 { #3 } + \@@_box_ulined_info:Nn #1 { #2 } } % \end{macrocode} % \end{macro} @@ -3677,10 +3698,10 @@ To produce the documentation run the original source files ending with 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 = { \__nju_cs_clear:N \@@_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: { } } } } { @@ -3802,9 +3823,9 @@ To produce the documentation run the original source files ending with % \changes{v1.0}{2022/06/30}{修改类型选项。} % 学位,默认为学士。 % \begin{macrocode} - type .choices:nn = { bachelor, master, doctor, postdoc } + type .choices:nn = { bachelor, master, doctor, postdoc } { \int_gset_eq:NN \g_@@_info_type_int \l_keys_choice_int }, - type .initial:n = bachelor, + type .initial:n = bachelor, % \end{macrocode} % \end{macro} % @@ -3812,9 +3833,12 @@ To produce the documentation run the original source files ending with % \changes{v1.0}{2022/06/30}{修改学位选项。} % 研究生的学位类型,默认为学术学位。 % \begin{macrocode} - degree .choices:nn = { academic, professional } - { \int_gset_eq:NN \g_@@_info_degree_int \l_keys_choice_int }, - degree .initial:n = academic, + degree .choice:, + degree / academic .code:n = + { \bool_set_true:N \g_@@_opt_academic_bool }, + degree / professional .code:n = + { \bool_set_false:N \g_@@_opt_academic_bool }, + degree .initial:n = academic, % \end{macrocode} % \end{macro} % @@ -3822,8 +3846,8 @@ To produce the documentation run the original source files ending with % 是否需要国家图书馆封面。本选项仅用于研究生模板,默认关闭。 % \footnote{nl 代表 National Library。} % \begin{macrocode} - nl-cover .bool_set:N = \g_@@_opt_nlcover_bool, - nl-cover .initial:n = false, + nl-cover .bool_set:N = \g_@@_opt_nlcover_bool, + nl-cover .initial:n = false, % \end{macrocode} % \end{macro} % @@ -3834,8 +3858,8 @@ To produce the documentation run the original source files ending with % \footnote{原创性声明的英文翻译为 Declaration of Originality, % 为了使选项表义更清晰同时缩减名称长度,将其修改为“声明页”这一名称。} % \begin{macrocode} - decl-page .bool_set:N = \g_@@_opt_decl_bool, - decl-page .initial:n = false, + decl-page .bool_set:N = \g_@@_opt_decl_bool, + decl-page .initial:n = false, % \end{macrocode} % \end{macro} % @@ -3843,8 +3867,8 @@ To produce the documentation run the original source files ending with % \changes{v0.13}{2021/12/15}{新增草稿模式选项。} % 是否开启草稿模式(默认关闭)。 % \begin{macrocode} - draft .bool_gset:N = \g_@@_opt_draft_bool, - draft .initial:n = false, + draft .bool_gset:N = \g_@@_opt_draft_bool, + draft .initial:n = false, % \end{macrocode} % \end{macro} % @@ -3852,9 +3876,9 @@ To produce the documentation run the original source files ending with % \changes{v0.14}{2022/01/14}{新增单双面模式选项。} % 单双面模式(默认为双面)。 % \begin{macrocode} - oneside .value_forbidden:n = true, - twoside .value_forbidden:n = true, - oneside .bool_gset_inverse:N = \g_@@_opt_twoside_bool, + oneside .value_forbidden:n = true, + twoside .value_forbidden:n = true, + oneside .bool_gset_inverse:N = \g_@@_opt_twoside_bool, % \end{macrocode} % \end{macro} % @@ -3864,8 +3888,8 @@ To produce the documentation run the original source files ending with % \begin{macro}{\g_@@_opt_anon_bool} % 盲审模式。 % \begin{macrocode} - anonymous .bool_set:N = \g_@@_opt_anon_bool, - anonymous .initial:n = false, + anonymous .bool_set:N = \g_@@_opt_anon_bool, + anonymous .initial:n = false, % \end{macrocode} % \end{macro} % \end{macro} @@ -3874,10 +3898,10 @@ To produce the documentation run the original source files ending with % \changes{v0.14}{2021/12/12}{简化字体选项名称。} % 中英文字体选项。 % \begin{macrocode} - latin-font .choices:nn = + latin-font .choices:nn = { gyre, mac, win, none } { \tl_set_eq:NN \g_@@_font_latin_tl \l_keys_choice_tl }, - cjk-font .choices:nn = + cjk-font .choices:nn = { fandol, founder, mac, noto, source, win, none } { \tl_set_eq:NN \g_@@_font_cjk_tl \l_keys_choice_tl }, % \end{macrocode} @@ -3888,23 +3912,23 @@ To produce the documentation run the original source files ending with % 数学字体选项。 % 由 \pkg{unicode-math} 指定 \XeTeX 和 \LuaTeX 下使用的数学字体。 % \begin{macrocode} - math-font .choices:nn = + math-font .choices:nn = { asana, cambria, fira, garamond, lm, libertinus, newcm, stix, bonum, dejavu, pagella, schola, termes, xits, none } { \tl_set_eq:NN \g_@@_font_math_tl \l_keys_choice_tl }, - math-font .initial:n = xits, + math-font .initial:n = xits, % \end{macrocode} % \end{macro} % % \begin{macro}{font-path} % 独立字体文件的路径。 % \begin{macrocode} - font-path .code:n = + font-path .code:n = { \bool_set_true:N \g_@@_font_path_bool - \tl_set_eq:NN \g_@@_font_path_tl \l_keys_choice_tl + \tl_set_eq:NN \g_@@_font_path_tl \l_keys_value_tl }, % \end{macrocode} % \end{macro} @@ -3914,8 +3938,8 @@ To produce the documentation run the original source files ending with % \begin{macro}{\g_@@_opt_zihao_tl} % 字号。默认为小四号。 % \begin{macrocode} - zihao .tl_set:N = \g_@@_opt_zihao_tl, - zihao .initial:n = -4, + zihao .tl_set:N = \g_@@_opt_zihao_tl, + zihao .initial:n = -4, % \end{macrocode} % \end{macro} % \end{macro} @@ -3927,8 +3951,8 @@ To produce the documentation run the original source files ending with % Word 行距,故默认值为 $1.5\times\frac{1.3}{1.2} = 1.625$。 % 更详细的说明请参考 \pkg{zhlineskip} 宏包文档。 % \begin{macrocode} - linespread .tl_set:N = \g_@@_opt_linespread_tl, - linespread .initial:n = 1.625, + linespread .tl_set:N = \g_@@_opt_linespread_tl, + linespread .initial:n = 1.625, % \end{macrocode} % \end{macro} % \end{macro} @@ -3937,7 +3961,7 @@ To produce the documentation run the original source files ending with % \changes{v0.16}{2022/02/23}{新增 \opt{config} 选项。} % 配置文件路径。 % \begin{macrocode} - config .clist_set:N = \g_@@_config_clist + config .clist_set:N = \g_@@_config_clist } % \end{macrocode} % \end{macro} @@ -4035,6 +4059,13 @@ To produce the documentation run the original source files ending with { \tl_const:Nn \c_@@_name_pagemode_tl { oneside } } % \end{macrocode} % +% \changes{v1.1}{2022/09/26}{盲审模式下不显示声明页。} +% 盲审模式下不显示声明页。 +% \begin{macrocode} +\bool_if:NT \g_@@_opt_anon_bool + { \bool_set_false:N \g_@@_opt_decl_bool } +% \end{macrocode} +% % % \subsection{用户接口} % @@ -4053,6 +4084,19 @@ To produce the documentation run the original source files ending with % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_keys_set:nn} +% \changes{v1.1}{2022/09/26}{使用 \cs{keys_set_filter:nnn} 重构盲审模式。} +% 在开启盲审模式时,屏蔽被编入 \opt{annoymous} 分组的键值对输入。 +% \begin{macrocode} +\bool_if:NTF \g_@@_opt_anon_bool + { + \cs_new:Npn \@@_keys_set:nn #1#2 + { \keys_set_filter:nnn {#1} { anonymous } {#2} } + } + { \cs_new_eq:NN \@@_keys_set:nn \keys_set:nn } +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\njusetup} % \changes{v0.6}{2021/09/10}{改用键值对输入信息。} % \changes{v1.0}{2022/08/01}{增加输入键路径的可选参数。} @@ -4070,11 +4114,11 @@ To produce the documentation run the original source files ending with \NewDocumentCommand \njusetup { o m } { \tl_if_novalue:nTF { #1 } - { \keys_set:nn { nju } { #2 } } + { \@@_keys_set:nn { nju } { #2 } } { \tl_if_in:nnTF { #1 } { / } - { \keys_set:nn { nju } { #1 = {#2} } } - { \keys_set:nn { nju / #1 } {#2} } + { \@@_keys_set:nn { nju } { #1 = {#2} } } + { \@@_keys_set:nn { nju / #1 } {#2} } } } % \end{macrocode} @@ -4182,10 +4226,13 @@ To produce the documentation run the original source files ending with % \begin{macrocode} \clist_map_inline:nn { - { no-math } { fontspec }, - { perpage } { footmisc }, - { capitalise, nameinlink, noabbrev } - { cleveref } +% \end{macrocode} +% 隐藏 |does not contain script "CJK"| 警告。 +% \begin{macrocode} + { quiet } { xeCJK }, + { no-math } { fontspec }, + { perpage } { footmisc }, + { capitalise, nameinlink, noabbrev } { cleveref } } { \PassOptionsToPackage #1 } % \end{macrocode} @@ -4274,7 +4321,7 @@ To produce the documentation run the original source files ending with \sys_if_engine_luatex:T { \RequirePackage { lua-ul } - \NewDocumentCommand \njuline { m } { \underLine{#1} \null } + \NewDocumentCommand \njuline { m } { \underLine{#1} \@@_null: } } % \end{macrocode} % \end{macro} @@ -4407,10 +4454,10 @@ To produce the documentation run the original source files ending with % \changes{v0.14}{2022/01/14}{将标题断行控制符修改为 |\\|。} % 题目。中文题目可使用 |\\| 手动断行。以下标注星号(|*|)的皆为对应的英文字段。 % \begin{macrocode} - title .tl_set:N = \g_@@_info_title_tl, - title .initial:n = { 空 }, - title* .tl_set:N = \g_@@_info_title_en_tl, - title* .initial:n = { Empty }, + title .tl_set:N = \g_@@_info_title_tl , + title .initial:n = { 空 } , + title* .tl_set:N = \g_@@_info_title_en_tl , + title* .initial:n = { Empty } , % \end{macrocode} % \end{macro} % @@ -4418,30 +4465,30 @@ To produce the documentation run the original source files ending with % \changes{v0.11}{2021/10/01}{修改了添加关键词的方式。} % 关键词列表。 % \begin{macrocode} - keywords .clist_set:N = \g_@@_info_keywords_clist, - keywords* .clist_set:N = \g_@@_info_keywords_en_clist, + keywords .clist_set:N = \g_@@_info_keywords_clist , + keywords* .clist_set: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_set:N = \g_@@_info_grade_tl, - student-id .tl_set:N = \g_@@_info_id_tl, - author .tl_set:N = \g_@@_info_author_tl, - author* .tl_set:N = \g_@@_info_author_en_tl, + grade .tl_set:N = \g_@@_info_grade_tl , + student-id .tl_set:N = \g_@@_info_id_tl , + author .tl_set:N = \g_@@_info_author_tl , + author* .tl_set:N = \g_@@_info_author_en_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/department,info/department*,info/major,info/major*,info/field,info/field*} % 院系、专业、方向。 % \begin{macrocode} - department .tl_set:N = \g_@@_info_dept_tl, - department* .tl_set:N = \g_@@_info_dept_en_tl, - major .tl_set:N = \g_@@_info_major_tl, - major* .tl_set:N = \g_@@_info_major_en_tl, - field .tl_set:N = \g_@@_info_field_tl, - field* .tl_set:N = \g_@@_info_field_en_tl, + department .tl_set:N = \g_@@_info_dept_tl , + department* .tl_set:N = \g_@@_info_dept_en_tl , + major .tl_set:N = \g_@@_info_major_tl , + major* .tl_set:N = \g_@@_info_major_en_tl , + field .tl_set:N = \g_@@_info_field_tl , + field* .tl_set:N = \g_@@_info_field_en_tl , % \end{macrocode} % \end{macro} % @@ -4450,16 +4497,16 @@ To produce the documentation run the original source files ending with % \changes{v0.14}{2022/01/12}{精简导师信息选项。} % 导师信息。中文导师全称使用 |clist| 存储,便于在本科生封面中进行分割。 % \begin{macrocode} - supervisor .clist_set:N = \g_@@_info_supv_clist, - supervisor* .tl_set:N = \g_@@_info_supv_en_tl, + supervisor .clist_set:N = \g_@@_info_supv_clist , + supervisor* .tl_set:N = \g_@@_info_supv_en_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/supervisor-ii,info/supervisor-ii*} % 第二导师信息。 % \begin{macrocode} - supervisor-ii .clist_set:N = \g_@@_info_supvii_clist, - supervisor-ii* .tl_set:N = \g_@@_info_supvii_en_tl, + supervisor-ii .clist_set:N = \g_@@_info_supvii_clist , + supervisor-ii* .tl_set:N = \g_@@_info_supvii_en_tl , % \end{macrocode} % \end{macro} % @@ -4467,8 +4514,8 @@ To produce the documentation run the original source files ending with % \changes{v0.14}{2022/01/14}{精简提交日期选项。} % 提交日期,初始值为编译当天日期。 % \begin{macrocode} - submit-date .tl_set:N = \g_@@_info_submitdate_raw_tl, - submit-date .initial:V = \c_@@_today_tl, + submit-date .tl_set:N = \g_@@_info_submitdate_raw_tl , + submit-date .initial:V = \c_@@_today_tl , % \end{macrocode} % \end{macro} % @@ -4476,8 +4523,8 @@ To produce the documentation run the original source files ending with % \changes{v0.14}{2022/01/14}{精简答辩日期选项。} % 答辩日期。 % \begin{macrocode} - defend-date .tl_set:N = \g_@@_info_defenddate_raw_tl, - defend-date .initial:V = \c_@@_today_tl, + defend-date .tl_set:N = \g_@@_info_defenddate_raw_tl , + defend-date .initial:V = \c_@@_today_tl , % \end{macrocode} % \end{macro} % @@ -4485,8 +4532,8 @@ To produce the documentation run the original source files ending with % \changes{v0.19}{2022/05/23}{新增国家图书馆封面的学位授予日期设置项。} % 学位授予日期。 % \begin{macrocode} - confer-date .tl_set:N = \g_@@_info_conferdate_raw_tl, - confer-date .initial:V = \c_@@_today_tl, + confer-date .tl_set:N = \g_@@_info_conferdate_raw_tl , + confer-date .initial:V = \c_@@_today_tl , % \end{macrocode} % \end{macro} % @@ -4494,26 +4541,26 @@ To produce the documentation run the original source files ending with % \changes{v0.19}{2022/05/23}{新增国家图书馆封面的底部日期设置项。} % 底部日期。 % \begin{macrocode} - bottom-date .tl_set:N = \g_@@_info_bottomdate_raw_tl, - bottom-date .initial:V = \c_@@_today_tl, + bottom-date .tl_set:N = \g_@@_info_bottomdate_raw_tl , + bottom-date .initial:V = \c_@@_today_tl , % \end{macrocode} % \end{macro} % % \begin{macro}{info/defend-date,info/chairman,info/reviewer} % 答辩委员会信息。 % \begin{macrocode} - chairman .tl_set:N = \g_@@_info_chairman_tl, - reviewer .clist_set:N = \g_@@_info_reviewer_clist, + chairman .tl_set:N = \g_@@_info_chairman_tl , + reviewer .clist_set:N = \g_@@_info_reviewer_clist , % \end{macrocode} % \end{macro} % % \begin{macro}{info/clc,info/secret-level,info/udc,info/supervisor-contact} % 国家图书馆封面相关信息。 % \begin{macrocode} - clc .tl_set:N = \g_@@_info_clc_tl, - secret-level .tl_set:N = \g_@@_info_secretlv_tl, - udc .tl_set:N = \g_@@_info_udc_tl, - supervisor-contact .tl_set:N = \g_@@_info_supvcont_tl, + clc .tl_set:N = \g_@@_info_clc_tl , + secret-level .tl_set:N = \g_@@_info_secretlv_tl , + udc .tl_set:N = \g_@@_info_udc_tl , + supervisor-contact .tl_set:N = \g_@@_info_supvcont_tl , % \end{macrocode} % \end{macro} % @@ -4523,56 +4570,33 @@ To produce the documentation run the original source files ending with % \begin{macrocode} email .tl_set:N = \g_@@_info_email_tl } +\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} % \end{macro} % -% \changes{v0.16}{2022/03/06}{正确处理学位和类型信息。} -% 设置学位信息。该设置需要放在 \tn{ProcessKeysOptions} -% 命令以及载入配置文件中的常量信息后进行。 -% \begin{macrocode} -\tl_set:Nx \g_@@_info_type_tl - { - \clist_item:Nn \c_@@_name_type_clist - { \g_@@_info_type_int } - } -\tl_set:Nx \g_@@_info_degree_tl - { - \g_@@_info_type_tl - \clist_item:Nn \c_@@_name_degree_clist - { \g_@@_info_degree_int } - } -% \end{macrocode} -% % \changes{v0.15}{2022/01/22}{正确处理双导师信息。} % 在导言区录入用户信息后进行变量设置。此处使用到了 \pkg{ctex} 提供的命令, % 应当位于载入文档类之后。 % \begin{macrocode} -\ctex_at_end_preamble:n +\@@_at_begin_document:n { % \end{macrocode} -% 设置类型信息。 -% \begin{macrocode} - \tl_set:Nx \g_@@_info_type_en_tl - { \clist_item:Nn \c_@@_name_type_en_clist { \g_@@_info_type_int } } -% \end{macrocode} % 拼合双导师的姓名和职称。 % \begin{macrocode} - \bool_set:Nn \l_@@_second_supvbool - { ! \clist_if_empty_p:N \g_@@_info_supvii_clist } - \tl_set:Nx \g_@@_info_supvfull_tl + \clist_map_inline:nn + { \g_@@_info_supv_clist, \g_@@_info_supvii_clist } { - \clist_use:Nn \g_@@_info_supv_clist { \@@_hskip: } - \bool_if:NT \l_@@_second_supvbool - { - \@@_quad: - \clist_use:Nn \g_@@_info_supvii_clist { \@@_hskip: } - } + \tl_gput_right:Nx \g_@@_info_supvfull_tl + { \clist_use:Nn #1 { \@@_hskip: } \@@_quad: } } - \tl_set:Nx \g_@@_info_supvfull_en_tl + \tl_gput_right:Nn \g_@@_info_supvfull_tl { \tex_unskip:D } + \tl_set:Nn \g_@@_info_supvfull_en_tl { - \g_@@_info_supv_en_tl - \bool_if:NT \l_@@_second_supvbool - { \@@_quad: \g_@@_info_supvii_en_tl } + \g_@@_info_supv_en_tl \@@_quad: + \g_@@_info_supvii_en_tl \tex_unskip:D } } %</class> @@ -4624,22 +4648,46 @@ To produce the documentation run the original source files ending with % \end{macrocode} % \end{variable} % -% 盲审模式下抹去个人信息和学校名称。 +% \changes{v0.16}{2022/03/06}{正确处理学位和类型信息。} +% 设置学位信息。该设置需要放在 \tn{ProcessKeysOptions} 命令后进行。 +% +% \begin{variable}{\g_@@_info_type_tl} +% 文档类型字样。 +% \begin{macrocode} +%<*def-g> +\tl_new:N \g_@@_info_type_tl +\tl_set:Nx \g_@@_info_type_tl + { \clist_item:Nn \c_@@_name_type_clist { \g_@@_info_type_int } } +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_info_type_en_tl} +% 英文的学位字样。 +% \begin{macrocode} +\tl_new:N \g_@@_info_type_en_tl +\tl_set:Nx \g_@@_info_type_en_tl + { \clist_item:Nn \c_@@_name_type_en_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_set_eq:NN \g_@@_info_degree_tl \g_@@_info_type_tl +\bool_if:NF \g_@@_opt_academic_bool + { \tl_put_right:Nn \g_@@_info_degree_tl { 专业 } } +%</def-g> +% \end{macrocode} +% \end{variable} +% +% 盲审模式下抹去学校名称。 % \begin{macrocode} %<*class> \bool_if:NT \g_@@_opt_anon_bool { - \ctex_at_end_preamble:n - { - \clist_map_inline:Nn \c_@@_name_anon_clist - { \tl_gclear:c { g_@@_info_ #1 _tl } } - \clist_map_inline:Nn \c_@@_name_anon_en_clist - { \tl_gclear:c { g_@@_info_ #1 _en_tl } } - \clist_map_inline:Nn \c_@@_name_anonlist_clist - { \clist_gclear:c { g_@@_info_ #1 _clist } } - \tl_gclear:N \c_@@_name_nju_tl - \tl_gclear:N \c_@@_name_nju_en_tl - } + \tl_gclear:N \c_@@_name_nju_tl + \tl_gclear:N \c_@@_name_nju_en_tl } % \end{macrocode} % @@ -4789,17 +4837,18 @@ To produce the documentation run the original source files ending with \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] - \setCJKfamilyfont{zhnewhei}{PingFang~SC} + \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} @@ -4851,7 +4900,8 @@ To produce the documentation run the original source files ending with \cs_new_protected:Npn \@@_loadfont_cjk_founder: { % \end{macrocode} -% 调整方正字体括号位置。\footnote{\XeTeX 的调整方法来自 \url{https://www.zhihu.com/question/46241367/answer/101660183}。} +% 调整方正字体括号位置。 +% \footnote{\XeTeX 的调整方法来自 \url{https://www.zhihu.com/question/46241367/answer/101660183}。} % \begin{macrocode} \sys_if_engine_xetex:T { \xeCJKEditPunctStyle {quanjiao} { optimize-kerning = true } } @@ -5502,14 +5552,6 @@ To produce the documentation run the original source files ending with % \end{variable} % % \begin{macrocode} -\msg_new:nnn { njuthesis } { extra-bib-style } - { - Wrongly-placed~ bib~ style.\\ - Please~ use~ the~ `bib/style`~ field. - } -% \end{macrocode} -% -% \begin{macrocode} \keys_define:nn { nju / bib } { % \end{macrocode} @@ -5543,17 +5585,13 @@ To produce the documentation run the original source files ending with % \changes{v0.15}{2022/02/15}{提供传入 \pkg{biblatex} 宏包选项的接口。} % 待传入 \pkg{biblatex} 的额外宏包选项,以列表形式储存。 % 更为常见的参考文献样式设置已由 \opt{bib/style} 提供, -% 此处对重复的样式设置进行了检查。本设置项等效于在导言区使用 -% |\PassoptionToPackage{|\meta{key}|=|\meta{value}|}{biblatex}| 命令。 +% 两者中后传入的设置会覆盖已有的设定。本设置项等效于在导言区使用 +% |\PassoptionsToPackage{|\meta{key}|=|\meta{value}|}{biblatex}| 命令。 % \begin{macrocode} option .code:n = { - \tl_if_in:VnTF \l_keys_value_tl { style = } - { \msg_error:nn { njuthesis } { extra-bib-style } } - { \clist_gput_right:NV \g_@@_blx_option_clist \l_keys_value_tl - } }, % \end{macrocode} % \end{macro} @@ -5563,10 +5601,7 @@ To produce the documentation run the original source files ending with % 参考文献数据源,以列表形式储存。 % \begin{macrocode} resource .code:n = - { - \clist_gput_right:NV \g_@@_blx_resource_clist - \l_keys_value_tl - }, + { \clist_gput_right:NV \g_@@_blx_resource_clist \l_keys_value_tl }, } % \end{macrocode} % \end{macro} @@ -5592,8 +5627,7 @@ To produce the documentation run the original source files ending with { \cs_undefine:N \addbibresource \clist_gput_right:Nn \g_@@_blx_option_clist { backend = biber } - \exp_args:NV \PassOptionsToPackage - \g_@@_blx_option_clist { biblatex } + \exp_args:NV \PassOptionsToPackage \g_@@_blx_option_clist { biblatex } } % \end{macrocode} % \end{macro} @@ -5626,9 +5660,9 @@ To produce the documentation run the original source files ending with % 使用 \pkg{etoolbox} 提供的 \tn{BeforeBeginEnvironment},在 \env{document} 环境 % 开始的钩子前载入 \pkg{biblatex} 并进行相关设置。 % \begin{macrocode} -\BeforeBeginEnvironment { document } +\bool_if:NT \g_@@_opt_load_blx_bool { - \bool_if:NT \g_@@_opt_load_blx_bool + \BeforeBeginEnvironment { document } { \@@_blx_pre_setup: \RequirePackage { biblatex } @@ -5704,61 +5738,105 @@ To produce the documentation run the original source files ending with % % \subsection{脚注} % \changes{v0.18}{2022/05/01}{提供脚注设置项。} -% ^^A 来自 fduthesis +% ^^A 借鉴 fduthesis +% +% \begin{variable}{\g_@@_fn_ctext_option_clist} +% 存储传入 \pkg{circledtext} 宏包的选项列表。 +% 由于当前版本放在编号位置的带圈数字无法正确缩放,这里手动指定了字体大小。 +% \begin{macrocode} +\clist_set:Nn \g_@@_fn_ctext_option_clist { charf = \scriptsize } +% \end{macrocode} +% \end{variable} +% % \begin{macrocode} -\tl_new:N \g_@@_fn_style_tl \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 } + style .choices:nn = { plain, pifont, circled, circled* } + { + \int_case:nnF { \l_keys_choice_int } + { % \end{macrocode} -% 若使用 \opt{pifont} 类型,则需引入 \pkg{pifont} 宏包。 +% \opt{pifont} 类型,用作对旧发行版的兼容选项。 % \begin{macrocode} - { - \tl_gset_eq:NN \g_@@_fn_style_tl \l_keys_choice_tl - \int_compare:nT { \l_keys_choice_int = 2 } - { \RequirePackage { pifont } } - } - } + { 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}{\@@_fn_symbol_pifont:n} -% \opt{pifont} 普通版。以下四种都只包含 \numrange{1}{10}。 +% \begin{macro}{footnote/circledtext-option} +% \changes{v1.1}{2022/10/16}{将生成脚注圈码的 \pkg{pifont} 替换为 \pkg{circledtext}。} +% \pkg{circledtext} 宏包选项。 % \begin{macrocode} -\cs_new:Npn \@@_fn_symbol_pifont:n #1 - { \ding { \int_eval:n { 171 + #1 } } } + circledtext-option .code:n = + { \clist_gput_right:Nn \g_@@_fn_ctext_option_clist {#1} }, % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_footnote_number:N} -% 脚注编号样式。 +% \begin{macro}{footnote/hang} +% \changes{v1.1}{2022/10/16}{新增悬挂缩进选项。} +% 是否悬挂缩进。 % \begin{macrocode} -\tl_const:Nn \c_@@_fn_style_plain_tl { plain } -\tl_const:Nn \c_@@_fn_style_pifont_tl { pifont } -\cs_new:Npn \@@_footnote_number:N #1 - { - \tl_case:NnF \g_@@_fn_style_tl - { + hang .bool_gset:N = \g_@@_fn_hang_bool, + hang .initial:n = true + } % \end{macrocode} -% \opt{plain} 类型直接使用计数器 |footnote| 的值。 +% \end{macro} +% +% \begin{macro}{\@@_fn_number_pifont:N} +% \opt{pifont} 选项提供的带圈数字。 % \begin{macrocode} - \c_@@_fn_style_plain_tl - { \int_use:N #1 } +\cs_new:Npn \@@_fn_number_pifont:N #1 { \ding { \int_eval:n { 171 + #1 } } } % \end{macrocode} -% \opt{pifont} 类型无需进行额外的操作。 +% \end{macro} +% +% \begin{macro}{\@@_fn_number_circled:Nn,\@@_fn_number_circled:NV} +% \opt{circled} 选项提供的带圈数字。 % \begin{macrocode} - \c_@@_fn_style_pifont_tl - { \@@_fn_symbol_pifont:n {#1} } - } +\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} -% 变量 \cs{l_@@_fn_style_tl} 保存的类型未知时,默认使用 \opt{plain} -% 类型。 +% \end{macro} +% +% \begin{macro}{\@@_fn_number:N} +% 脚注编号。默认使用计数器 |footnote| 的值。 % \begin{macrocode} - { \int_use:N #1 } - } +\cs_new_eq:NN \@@_fn_number:N \int_use:N % \end{macrocode} % \end{macro} % @@ -5767,21 +5845,28 @@ To produce the documentation run the original source files ending with % \begin{macrocode} \bool_if:NT \g_@@_opt_load_fm_bool { - \cs_set:Npn \thefootnote { \@@_footnote_number:N \c@footnote } + \cs_set:Npn \thefootnote { \@@_fn_number:N \c@footnote } % \end{macrocode} % \end{macro} % % \subsubsection{整体样式} % % \begin{macro}[int]{\@makefntext} -% 重定义内部脚注文字命令,使脚注编号不使用上标,宽度为 \qty{1.5}{em}。 +% 重定义内部脚注文字命令,使脚注编号不使用上标,宽度为 \qty{1.5}{em} % \footnote{\url{http://tex.stackexchange.com/q/19844}, -% \url{https://www.zhihu.com/question/53030087}} +% \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 { 1.5 em } { \@thefnmark \tex_hfil:D } + \hbox_to_wd:nn { \c_@@_fnhang_dim } { \@thefnmark \tex_hfil:D } + \tex_penalty:D \@M + \bool_if:NT \g_@@_fn_hang_bool + { + \int_set:Nn \tex_hangafter:D { 1 } + \dim_set_eq:NN \tex_hangindent:D \c_@@_fnhang_dim + } #1 } } @@ -5792,7 +5877,7 @@ To produce the documentation run the original source files ending with % \subsection{图片表格} % % \begin{macro}{image/path} -% \changes{v1.0}{2021/08/06}{提供图片路径设置。} +% \changes{v1.0}{2022/08/06}{提供图片路径设置。} % 外置图片路径,等效于 \tn{graphicspath}。 % \begin{macrocode} \keys_define:nn { nju / image } { path .code:n = { \graphicspath {#1} } } @@ -5860,7 +5945,7 @@ To produce the documentation run the original source files ending with % \end{macro} % % \begin{macro}{label-sep/figure,label-sep/table,label-sep/equation} -% \changes{1.0}{2022/07/31}{添加编号连接符设置项。} +% \changes{v1.0}{2022/07/31}{添加编号连接符设置项。} % 修改图片、表格、公式编号中的连接符。 % \footnote{\url{https://tex.stackexchange.com/q/61756/}} % \begin{macrocode} @@ -5929,10 +6014,26 @@ To produce the documentation run the original source files ending with % \end{macrocode} % \end{macro} % -% \begin{macro}{theorem/type,theorem/define} -% 定义和创建定理类环境的接口。 +% \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/define} +% 创建定理类环境。 % \begin{macrocode} - type .clist_set:N = \g_@@_thm_type_clist, define .value_forbidden:n = true, define .code:n = { @@ -6218,8 +6319,8 @@ To produce the documentation run the original source files ending with \use:c { @@_loadfont_math_ \g_@@_font_math_tl : } \bool_if:NT \g_@@_opt_math_leq_bool { - \cs_set_eq:NN \le \leslant - \cs_set_eq:NN \ge \geslant + \cs_set_eq:NN \le \leqslant + \cs_set_eq:NN \ge \geqslant \cs_set_eq:NN \leq \leqslant \cs_set_eq:NN \geq \geqslant } @@ -6321,7 +6422,7 @@ To produce the documentation run the original source files ending with \@@_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 \l_@@_second_supvbool + \bool_if:NT \g_@@_opt_second_supv_bool { \@@_cover_entry_supv:NNNn #1 \l_@@_tmpb_dim #4 { supvii } } \@@_cover_entry:NNNn #1 #2 #4 { submitdate } } @@ -6567,10 +6668,8 @@ To produce the documentation run the original source files ending with { content = \c_@@_text_cover_en_tl \@@_vskip: - \textsc { \clist_item:Nn \c_@@_name_type_en_clist - { \g_@@_info_degree_int } } - \@@_vskip: { in } \@@_vskip: - \g_@@_info_major_en_tl, + \group_begin: \scshape \g_@@_info_type_en_tl \group_end: + \@@_vskip: { in } \@@_vskip: \g_@@_info_major_en_tl, bottom-skip = 2 cm } % \end{macrocode} @@ -6679,14 +6778,15 @@ To produce the documentation run the original source files ending with % \begin{macrocode} \cs_new_protected:Npn \@@_cover_top_nl: { - \dim_set:Nn \l_@@_tmpa_dim { 3.2 em } - \dim_set:Nn \l_@@_tmpb_dim { 9 em } - \@@_box_spread_name:Nn \l_@@_tmpa_dim { clc } \@@_hskip: - \@@_box_ulined_info:Nn \l_@@_tmpb_dim { clc } \tex_hfill:D + \dim_set:Nn \l_@@_tmpa_dim { 38.6 pt } + \dim_set:Nn \l_@@_tmpb_dim { 109 pt } + \@@_box_spread_name:Nn \l_@@_tmpa_dim { clc } \@@_hskip: + \@@_box_ulined_info:Nn \l_@@_tmpb_dim { clc } \tex_hfill:D \@@_box_spread_name:Nn \l_@@_tmpa_dim { secretlv } \@@_hskip: \@@_box_ulined_info:Nn \l_@@_tmpb_dim { secretlv } \tex_par:D - \@@_box_spread_name:Nn \l_@@_tmpa_dim { udc } \@@_hskip: - \@@_box_ulined_info:Nn \l_@@_tmpb_dim { udc } \tex_hfill:D \hbox:n { } + \@@_box_spread_name:Nn \l_@@_tmpa_dim { udc } \@@_hskip: + \@@_box_ulined_info:Nn \l_@@_tmpb_dim { udc } \tex_hfill:D + \@@_null: } % \end{macrocode} % \end{macro} @@ -6715,20 +6815,28 @@ To produce the documentation run the original source files ending with % \begin{macrocode} \cs_new_protected:Npn \@@_cover_info_nl: { - \skip_set:Nn \l_@@_tmp_skip { 1 em plus 1 fill } - \@@_uline_list:NNn \c_@@_name_supvinfo_tl \l_@@_tmp_skip + \tl_set:Nx \l_@@_tmpa_tl { \clist_use:Nn \g_@@_info_supv_clist { ~ } \clist_use:Nn \g_@@_info_supvii_clist { ~ } \@@_hskip: \g_@@_info_supvcont_tl } - \@@_uline_bientry:Nnnn \l_@@_tmpa_dim { degree } { degree } { } - \@@_uline_bientry:Nnnn \l_@@_tmpa_dim { majorb } { major } { } - \tex_par:D - \@@_uline_bientry:Nnnn \l_@@_tmpa_dim { submitdate } { submitdate } { } - \@@_uline_bientry:Nnnn \l_@@_tmpa_dim { defenddate } { defenddate } { } + \skip_set:Nn \l_@@_tmp_skip { .5 em plus 1 fill } + \@@_uline_list:NNn \l_@@_tmpa_tl \l_@@_tmp_skip + { \c_@@_name_supvinfo_tl } +% \end{macrocode} +% 临时替换显示的名称字样。 +% \begin{macrocode} + \group_begin: + \tl_set_eq:NN \c_@@_name_major_tl \c_@@_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:Nnnn \l_@@_tmpa_dim { confer } { confer } { } + \@@_uline_entry:Nn \l_@@_tmpa_dim { confer } } % \end{macrocode} % \end{macro} @@ -6850,13 +6958,14 @@ To produce the documentation run the original source files ending with % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_degree_checkbox:n} +% \begin{macro}{\@@_degree_checkbox:Nn} % 信息栏的学位复选框。打勾符号对应 |U+2713|。 % \begin{macrocode} -\cs_new_protected:Npn \@@_degree_checkbox:n #1 +\cs_new_protected:Npn \@@_degree_checkbox:Nn #1#2 { - \int_compare:nNnTF { #1 } { = } - { \g_@@_info_degree_int * \g_@@_info_type_int } + \bool_lazy_and:nnTF + { \g_@@_opt_academic_bool && #1 } + { \int_compare_p:n { \g_@@_info_type_int = #2 } } { \makebox [ 0 pt ] [l] { \ensuremath { \mdwhtsquare } } \hspace { 0.1 em } \ensuremath { \checkmark } @@ -6874,31 +6983,28 @@ To produce the documentation run the original source files ending with \begin{tblr} { hlines, vlines, hspan=minimal, - cells = {font=\normalsize}, - colspec = {cX[c]cX[c]cX[c]}, + 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} } \c_@@_name_titlec_tl & \g_@@_info_title_tl \\ \c_@@_name_ida_tl & \g_@@_info_id_tl & \c_@@_name_depta_tl & \g_@@_info_dept_tl & - \c_@@_name_year_tl & + \c_@@_name_year_tl & \tl_range:Nnn \g_@@_info_submitdate_raw_tl {1} {4} \\ \c_@@_name_degreea_tl & { - \@@_degree_checkbox:n { 2 } 学术学位硕士 \qquad{} - \@@_degree_checkbox:n { 4 } 专业学位硕士 \\ - \@@_degree_checkbox:n { 3 } 学术学位博士 \qquad{} - \@@_degree_checkbox:n { 6 } 专业学位博士 + \@@_degree_checkbox:Nn \c_true_bool { 2 } 学术学位硕士 \qquad + \@@_degree_checkbox:Nn \c_false_bool { 2 } 专业学位硕士 \\ + \@@_degree_checkbox:Nn \c_true_bool { 3 } 学术学位博士 \qquad + \@@_degree_checkbox:Nn \c_false_bool { 3 } 专业学位博士 } \\ - \c_@@_name_email_tl & \g_@@_info_email_tl \\ + \c_@@_name_email_tl & \g_@@_info_email_tl \\ \c_@@_name_supvb_tl & - \clist_item:Nn \g_@@_info_supv_clist {1} - \bool_if:NT \l_@@_second_supvbool - { - \@@_quad: - \clist_item:Nn \g_@@_info_supvii_clist {1} - } \\ + \clist_item:Nn \g_@@_info_supv_clist { 1 } + \bool_if:NT \g_@@_opt_second_supv_bool + { \@@_quad: \clist_item:Nn \g_@@_info_supvii_clist { 1 } } \\ \end{tblr} } % \end{macrocode} @@ -7094,9 +7200,9 @@ To produce the documentation run the original source files ending with % \begin{macrocode} \cs_new_protected:Npn \@@_p_decl_sign:nn #1#2 { - \@@_name:n {#1} \c_@@_name_colon_tl \hfill + \@@_name:n {#1} \c_@@_name_colon_tl \tex_hfill:D \@@_name:n {#2} \c_@@_name_colon_tl - \skip_horizontal:n { 160 pt } \null \@@_vskip: + \skip_horizontal:n { 160 pt } \@@_null: \@@_vskip: } %</def-p> % \end{macrocode} @@ -7602,7 +7708,7 @@ To produce the documentation run the original source files ending with % \end{macrocode} % 专业、年级、姓名。 % \begin{macrocode} - \@@_full_uline:Nx \l_@@_tmp_skip + \@@_get_width_print:Nx \l_@@_tmp_skip { \dim_set:Nn \l_@@_tmpa_dim { 11 em } \dim_set:Nn \l_@@_tmpb_dim { 4 em } @@ -7615,7 +7721,7 @@ To produce the documentation run the original source files ending with % \end{macrocode} % 导师姓名、职称。 % \begin{macrocode} - \@@_full_uline:Nx \l_@@_tmpa_dim { \c_@@_name_supva_tl #1 } + \@@_get_width_print:Nx \l_@@_tmpa_dim { \c_@@_name_supva_tl #1 } \@@_box_ulined_info:Nn \l_@@_tmpa_dim { supvfull } } % \end{macrocode} @@ -7792,10 +7898,14 @@ To produce the documentation run the original source files ending with % 单独制作的前言致谢页。 % \begin{macrocode} \NewDocumentEnvironment { preface } { +b } - { \@@_chapter:V \c_@@_name_preface_tl #1 } + { \@@_chapter:V \c_@@_name_preface_tl #1 } { \cleardoublepage } \NewDocumentEnvironment { acknowledgement } { +b } - { \@@_chapter:V \c_@@_name_acknowledgement_tl #1 } + { + \bool_if:NTF \g_@@_opt_anon_bool + { \@@_bookmark_toc:V \c_@@_name_acknowledgementa_tl } + { \@@_chapter:V \c_@@_name_acknowledgement_tl #1 } + } { \cleardoublepage } % \end{macrocode} % \end{environment} @@ -7944,110 +8054,111 @@ To produce the documentation run the original source files ending with %<*(def-u|def-g|def-p)> \clist_map_inline:nn { - { acknowledgement } { 致 \qquad{} 谢 }, -%<def-g> { apply } {(申请 \g_@@_info_degree_tl 学位)}, -%<def-g> { auth decl } { 学位论文出版授权书 }, -%<def-p> { auth decl } { 研究报告使用授权书 }, -%<def-p> { author } { 作者 }, + { acknowledgement } { 致 \qquad{} 谢 }, + { acknowledgement a } { 致谢(盲审阶段,暂时隐去) }, +%<def-g> { apply } {(申请 \g_@@_info_degree_tl 学位)}, +%<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> { confer } { 学位授予单位和日期 }, - { date } { 日期 }, -%<def-g> { defend date } { 论文答辩日期 }, -%<def-g> { degree } { 申请学位级别 }, +%<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> { confer } { 学位授予单位和日期 }, + { date } { 日期 }, +%<def-g> { defend date } { 论文答辩日期 }, +%<def-g> { degree } { 申请学位级别 }, % \end{macrocode} % 用于出版授权书的学位名称字样 % \begin{macrocode} -%<def-g> { degree a } { 论文级别 }, -%<def-p> { dept } { 系别 }, +%<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 } { 工号 }, +%<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 } { 学科专业 }, +%<def-g> { id a } { 研究生学号 }, + { listoffigures } { 插图目录 }, + { listoftables } { 表格目录 }, +%<def-p> { major } { 学科专业 }, % \end{macrocode} % 用于摘要的专业名称字样 % \begin{macrocode} -%<def-g> { major a } { 专业 }, +%<def-g> { major a } { 专业 }, % \end{macrocode} % 用于国家图书馆封面的专业名称字样 % \begin{macrocode} -%<def-g> { major b } { 专业名称 }, - { 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> { major b } { 专业名称 }, + { 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> { 保密,保密期( \c_@@_name_blankdatea_tl 至 -%<def-g> \c_@@_name_blankdatea_tl ) }, -%<def-g> { sign } { (签字) }, -%<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 } { 合作导师 }, +%<def-g> \c_@@_name_blankdatea_tl ) }, +%<def-g> { sign } { (签字) }, +%<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 } { 指导教师(姓名、职称) }, +%<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 } { 报告题目 }, +%<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 } { 毕业论文题目 }, +%<def-g> { title a } { 毕业论文题目 }, % \end{macrocode} % 用于国家图书馆封面的标题名称字样 % \begin{macrocode} -%<def-g> { title b } { 学位论文 }, +%<def-g> { title b } { 学位论文 }, % \end{macrocode} % 用于出版授权书的标题名称字样 % \begin{macrocode} -%<def-g> { title c } { 论文题名 }, -%<def-g> { udc } { U D C }, -%<def-g> { year } { 学位年度 } +%<def-g> { title c } { 论文题名 }, +%<def-g> { udc } { U D C }, +%<def-g> { year } { 学位年度 } } { \@@_define_name:nn #1 } % \end{macrocode} @@ -8099,7 +8210,7 @@ To produce the documentation run the original source files ending with % 对专业硕士的封面条目进行临时修改。 % \begin{macrocode} %<*def-g> -\int_compare:nT { \g_@@_info_degree_int == 2 } +\bool_if:NF \g_@@_opt_academic_bool { \tl_set:Nn \c_@@_name_major_tl { 专业学位类别(领域) } } %</def-g> % \end{macrocode} @@ -8236,7 +8347,11 @@ To produce the documentation run the original source files ending with % 章节标题前后间距。 % \begin{macrocode} { chapter before } { 10 pt }, - { chapter after } { 60 pt } + { chapter after } { 60 pt }, +% \end{macrocode} +% 脚注编号宽度。 +% \begin{macrocode} + { fn hang } { 13.5 pt } } { \@@_define_dim:nn #1 } % \end{macrocode} |