summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls')
-rw-r--r--Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls370
1 files changed, 198 insertions, 172 deletions
diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls b/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
index 496d6753cba..2cbeec2104d 100644
--- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
+++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
@@ -24,18 +24,11 @@
%% `.dtx' through XeTeX.
%%
\NeedsTeXFormat{LaTeX2e}
-\GetIdInfo $Id: njuthesis.dtx 1.2.1 2023-05-03 13:30:00
+\GetIdInfo $Id: njuthesis.dtx 1.3.0 2023-06-06 11:30:00
+0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$
{Thesis template for Nanjing University}
\ProvidesExplClass{njuthesis}
{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
- % \begin{syntax}
- % \OPT{degree} = \Arg{中文学位名}
- % \OPT{degree*} = \Arg{英文学位名}
- % \end{syntax}
- % 研究生国家图书馆封面英文封面上的学位名称。默认会由模板通过 \opt{degree}
- % 和 \opt{type} 文档类选项生成,也可以由本选项自定义名称。
- % \end{function}
\RequirePackage { xtemplate, l3keys2e }
\msg_new:nnn { njuthesis } { l3-too-old }
@@ -86,7 +79,7 @@
\tl_new:N \g__nju_font_path_tl
\bool_new:N \g__nju_font_path_bool
\tl_new:N \g__nju_config_tl
-\tl_const:Nx \c__nju_today_tl
+\tl_const:Nx \c__nju_name_today_tl
{
\int_to_arabic:n { \c_sys_year_int } -
\int_to_arabic:n { \c_sys_month_int } -
@@ -121,66 +114,67 @@
\skip_vertical:N \c_zero_dim
}
\cs_new_protected:Npn \__nju_define_name:nn #1#2
- { \tl_const:cn { c__nju_name_ #1 _tl } { #2 } }
+ { \tl_const:cn { c__nju_name_ #1 _tl } {#2} }
\cs_new_protected:Npn \__nju_define_name:nnn #1#2#3
{
- \tl_const:cn { c__nju_name_ #1 _tl } { #2 }
- \tl_const:cn { c__nju_name_ #1 _en_tl } { #3 }
+ \tl_const:cn { c__nju_name_ #1 _tl } {#2}
+ \tl_const:cn { c__nju_name_ #1 _en_tl } {#3}
}
\cs_new_protected:Npn \__nju_define_fmt:nn #1#2
- { \tl_const:cn { c__nju_fmt_ #1 _tl } { #2 } }
+ { \tl_const:cn { c__nju_fmt_ #1 _tl } {#2} }
\cs_new_protected:Npn \__nju_define_dim:nn #1#2
- { \dim_const:cn { c__nju_ #1 _dim } { #2 } }
+ { \dim_const:cn { c__nju_ #1 _dim } {#2} }
\cs_new_protected:Npn \__nju_define_skip:nn #1#2
- { \skip_const:cn { c__nju_ #1 _skip } { #2 } }
+ { \skip_const:cn { c__nju_ #1 _skip } {#2} }
\cs_new:Npn \__nju_name:n #1 { \tl_use:c { c__nju_name_ #1 _tl } }
\cs_new:Npn \__nju_info:n #1 { \tl_use:c { g__nju_info_ #1 _tl } }
\cs_new:Npn \__nju_fmt:n #1 { \tl_use:c { c__nju_fmt_ #1 _tl } }
\cs_new:Npn \__nju_name:nn #1#2
{ \group_begin: \__nju_fmt:n {#1} \__nju_name:n {#2} \group_end: }
\cs_new:Npn \__nju_fontsize:nn #1#2
- { \fontsize { #1 } { #2 } \selectfont }
+ { \fontsize {#1} {#2} \selectfont }
\cs_new:Npn \__nju_fontsize:nnn #1#2#3
- { \__nju_fontsize:nn { #1 } { \fp_to_decimal:n { #3 * #1 } } }
+ { \__nju_fontsize:nn {#1} { \fp_to_decimal:n { #3 * #1 } } }
\cs_new:Npn \__nju_zihao:nn #1#2
{
- \prop_get:NnNTF \c__ctex_font_size_prop { #2 } \l__ctex_font_size_tl
- { \exp_after:wN \__nju_fontsize:nnn \l__ctex_font_size_tl { #1 } }
- { \msg_error:nnn { ctex } { fontsize } { #2 } }
+ \prop_get:NnNTF \c__ctex_font_size_prop {#2} \l__ctex_font_size_tl
+ { \exp_after:wN \__nju_fontsize:nnn \l__ctex_font_size_tl {#1} }
+ { \msg_error:nnn { ctex } { fontsize } {#2} }
}
\cs_new:Npn \__nju_zihao:n { \__nju_zihao:nn { 1.3 } }
\cs_generate_variant:Nn \cs_new:Npn { Npo }
\cs_new:Npo \__nju_set_ccglue:n #1
{
\sys_if_engine_xetex:TF
- { \skip_set:Nn \l__ctex_ccglue_skip { #1 } }
- { \ltjsetparameter { kanjiskip = { #1 } } }
+ { \skip_set:Nn \l__ctex_ccglue_skip {#1} }
+ { \ltjsetparameter { kanjiskip = {#1} } }
}
\cs_new_protected:Npn \__nju_box_ulined:NN #1#2
{
\mode_leave_vertical:
- \rule [ \c__nju_ruledpi_dim ] { #1 } { \c__nju_rulehti_dim }
+ \rule [ \c__nju_ruledpi_dim ] {#1} { \c__nju_rulehti_dim }
\skip_horizontal:n { -#1 }
- \hbox_to_wd:nn { #1 } { \tex_hfil:D #2 \tex_hfil:D }
+ \hbox_to_wd:nn {#1} { \tex_hfil:D #2 \tex_hfil:D }
}
\cs_generate_variant:Nn \__nju_box_ulined:NN { Nc }
\cs_new_protected:Npn \__nju_box_ulined_info:Nn #1#2
{ \__nju_box_ulined:Nc #1 { g__nju_info_ #2 _tl } }
-\cs_new_protected:Npn \__nju_box_spread:NNn #1#2#3
+\cs_new_protected:Npn \__nju_box_spread:NNNn #1#2#3#4
{
\mode_leave_vertical:
- \__nju_get_width:Nn \l__nju_tmp_skip { #2 #3 }
- \hbox_to_wd:nn { #1 }
+ \__nju_get_width:Nn #1 { #3 #4 }
+ \hbox_to_wd:nn {#2}
{
- \dim_compare:nTF { \l__nju_tmp_skip > #1 }
+ \dim_compare:nTF { #1 > #2 }
{
\tex_hfil:D \scalebox
- { \dim_to_decimal_in_unit:nn { #1 } { \l__nju_tmp_skip } }
- [ 1.0 ] { #2 #3 } \tex_hfil:D
+ { \dim_to_decimal_in_unit:nn {#2} {#1} }
+ [ 1.0 ] { #3 #4 } \tex_hfil:D
}
- { #2 \tl_map_inline:nn { #3 } { ##1 \tex_hfil:D } \tex_unskip:D }
+ { #3 \tl_map_inline:nn {#4} { ##1 \tex_hfil:D } \tex_unskip:D }
}
}
+\cs_new:Npn \__nju_box_spread:NNn { \__nju_box_spread:NNNn \l__nju_tmp_skip }
\cs_generate_variant:Nn \__nju_box_spread:NNn { NNv }
\cs_generate_variant:Nn \__nju_box_spread:NNn { NNx }
\cs_new_protected:Npn \__nju_box_spread_name:Nn #1#2
@@ -192,30 +186,29 @@
\mode_leave_vertical:
\hbox_to_wd:nn {#1} { \tex_hfil:D #2 \tex_hfil:D }
}
-\cs_new_protected:Npn \__nju_box_multiline:NNNn #1#2#3#4
+\cs_new_protected:Npn \__nju_box_multiline:NNNNn #1#2#3#4#5
{
- \int_set:Nn #1 { \int_max:nn { \clist_count:N #2 } { #4 } }
- \int_step_inline:nn { #1 }
+ \int_set:Nn #1 { \int_max:nn { \clist_count:N #3 } {#5} }
+ \int_step_inline:nn {#1}
{
- \clist_pop:NN #2 \l__nju_tmpa_tl
- \quark_if_no_value:NT \l__nju_tmpa_tl
- { \tl_set_eq:NN \l__nju_tmpa_tl \c_empty_tl }
- \__nju_box_ulined:NN #3 \l__nju_tmpa_tl \tex_par:D
+ \clist_pop:NNF #3 #2 { \tl_set_eq:NN #2 \c_empty_tl }
+ \__nju_box_ulined:NN #4 #2 \tex_par:D
}
}
-\cs_new:Npn \__nju_box_multiline:NNn { \__nju_box_multiline:NNNn \l__nju_tmpa_int }
+\cs_new:Npn \__nju_box_multiline:NNn
+ { \__nju_box_multiline:NNNNn \l__nju_tmpa_int \l__nju_tmpa_tl }
\cs_new_protected:Npn \__nju_uline:n #1
{
\mode_leave_vertical:
- \rule [ \c__nju_ruledpi_dim ] { #1 } { \c__nju_rulehti_dim }
+ \rule [ \c__nju_ruledpi_dim ] {#1} { \c__nju_rulehti_dim }
\skip_horizontal:n { -#1 }
}
\cs_new_protected:Npn \__nju_uuline:N #1
{
\mode_leave_vertical:
- \rule [ \c__nju_ruledpii_dim ] { #1 } { \c__nju_rulehtii_dim }
+ \rule [ \c__nju_ruledpii_dim ] {#1} { \c__nju_rulehtii_dim }
\skip_horizontal:n { -#1 }
- \rule [ \c__nju_ruledpiii_dim ] { #1 } { \c__nju_rulehtii_dim }
+ \rule [ \c__nju_ruledpiii_dim ] {#1} { \c__nju_rulehtii_dim }
\skip_horizontal:n { -#1 }
}
\cs_new:Npn \__nju_get_width:Nn #1#2
@@ -235,7 +228,7 @@
}
\cs_new_protected:Npn \__nju_get_width_print:Nn #1#2
{
- \__nju_get_width:Nn #1 { #2 }
+ \__nju_get_width:Nn #1 {#2}
\dim_set:Nn #1 { \textwidth - #1 } #2
}
\cs_generate_variant:Nn \__nju_get_width_print:Nn { Nv }
@@ -243,37 +236,30 @@
\cs_new_protected:Npn \__nju_uline_entry:Nn #1#2
{
\__nju_get_width_print:Nv #1 { c__nju_name_ #2 _tl }
- \__nju_box_ulined_info:Nn #1 { #2 }
+ \__nju_box_ulined_info:Nn #1 {#2}
}
\cs_new_protected:Npn \__nju_uline_bientry:Nn #1#2
{
\__nju_get_width_print:Nv #1 { c__nju_name_ #2 _tl }
\dim_sub:Nn #1 { \textwidth / 2 }
- \__nju_box_ulined_info:Nn #1 { #2 }
+ \__nju_box_ulined_info:Nn #1 {#2}
}
\cs_new:Npn \__nju_date:www #1-#2-#3 \q_stop
- { \__zhnum_date_aux:nnn { #1 } { #2 } { #3 } }
+ { \__zhnum_date_aux:nnn {#1} {#2} {#3} }
\cs_new:Npn \__nju_date_en:www #1-#2-#3 \q_stop
- { \clist_item:Nn \c__nju_name_month_en_clist { #2 } ~#3 , ~#1 }
-\cs_new_protected:Npn \__nju_date:n #1 { \__nju_date:nn { #1 } { } }
-\cs_new_protected:Npn \__nju_date_en:n #1 { \__nju_date:nn { #1 } { _en } }
-\cs_generate_variant:Nn \exp_last_unbraced:NV { cV }
-\cs_new_protected:Npn \__nju_date:nn #1#2
- {
- \tl_set:Nv \l__nju_tmpa_tl { g__nju_info_ #1 date_raw_tl }
- \tl_new:c { g__nju_info_ #1 date #2 _tl }
- \tl_set:cx { g__nju_info_ #1 date #2 _tl }
- {
- \tl_if_empty:NTF \l__nju_tmpa_tl
- { \__nju_name:n { blankdate #2 } }
- {
- \exp_last_unbraced:cV { __nju_date #2 :www }
- \l__nju_tmpa_tl \q_stop
- }
+ { \clist_item:Nn \c__nju_name_month_en_clist {#2} ~#3 , ~#1 }
+\cs_new:Npn \__nju_date:nn { \__nju_date:nnn { } }
+\cs_new:Npn \__nju_date:nnn #1#2#3
+ {
+ \tl_set:cx { g__nju_info_ #2 date #1 _tl }
+ {
+ \tl_if_empty:nTF {#3}
+ { \__nju_name:n { blankdate #1 } }
+ { \use:c { __nju_date #1 :www } #3 \q_stop }
}
}
\cs_new_protected:Npn \__nju_at_begin_document:n #1
- { \hook_gput_next_code:nn { begin document } { #1 } }
+ { \hook_gput_next_code:nn { begin document } {#1} }
\cs_new:Npn \__nju_cs_clear:N #1 { \cs_set_eq:NN #1 \tex_relax:D }
\cs_new:Npn \__nju_msg:nn { \msg_new:nnn { njuthesis } }
\cs_new:Npn \__nju_loop_until:nnn #1#2#3
@@ -329,7 +315,7 @@
{ \msg_error:nn { njuthesis } { missing-title } }
\__nju_box_spread_name:NNn #2 #4 { title }
\mode_leave_vertical: #1
- \parbox [ t ] { #3 }
+ \parbox [ t ] {#3}
{
\c__nju_fmt_covertitle_tl \__nju_uline_title:
\dim_gset_eq:NN \l__nju_tmpa_dim \tex_prevdepth:D
@@ -340,16 +326,16 @@
\cs_new:Npn \__nju_cover_entry_title:NNN { \__nju_cover_entry_title:NNNN \__nju_hskip: }
\cs_new_protected:Npn \__nju_cover_entry:NNNNn #1#2#3#4#5
{
- \__nju_box_spread_name:NNn #2 #4 { #5 } #1
- \__nju_box_ulined_info:Nn #3 { #5 } \tex_par:D
+ \__nju_box_spread_name:NNn #2 #4 {#5} #1
+ \__nju_box_ulined_info:Nn #3 {#5} \tex_par:D
}
\cs_new:Npn \__nju_cover_entry:NNNn { \__nju_cover_entry:NNNNn \__nju_hskip: }
\cs_new_protected:Npn \__nju_cover_entry:NNNnn #1#2#3#4#5
{
- \__nju_box_spread_name:NNn #1 #3 { #4 } \__nju_hskip:
- \__nju_box_ulined_info:Nn #2 { #4 } \__nju_hskip:
- \__nju_box_spread_name:NNn #1 #3 { #5 } \__nju_hskip:
- \__nju_box_ulined_info:Nn #2 { #5 } \tex_par:D
+ \__nju_box_spread_name:NNn #1 #3 {#4} \__nju_hskip:
+ \__nju_box_ulined_info:Nn #2 {#4} \__nju_hskip:
+ \__nju_box_spread_name:NNn #1 #3 {#5} \__nju_hskip:
+ \__nju_box_ulined_info:Nn #2 {#5} \tex_par:D
}
\cs_new_protected:Npn \__nju_cover_entry_supv:NNNn #1#2#3#4
{
@@ -357,20 +343,20 @@
{ \clist_item:cn { g__nju_info_ #4 _clist } { 1 } }
\tl_set:Nn \l__nju_tmpb_tl
{ \clist_item:cn { g__nju_info_ #4 _clist } { 2 } }
- \__nju_box_spread_name:NNn #1 #3 { #4 } \__nju_hskip:
+ \__nju_box_spread_name:NNn #1 #3 {#4} \__nju_hskip:
\__nju_box_ulined:NN #2 \l__nju_tmpa_tl \__nju_hskip:
\__nju_box_spread_name:NNn #1 #3 { supvtitle } \__nju_hskip:
\__nju_box_ulined:NN #2 \l__nju_tmpb_tl \tex_par:D
}
\cs_new_protected:Npn \__nju_emblem:N #1
- { \njuemblem [ \c__nju_fmt_emblemcolor_tl ] { #1 } { ! } }
+ { \njuemblem [ \c__nju_fmt_emblemcolor_tl ] {#1} { ! } }
\cs_new_protected:Npn \__nju_name:N #1
- { \njuname [ \c__nju_fmt_namecolor_tl ] { #1 } { ! } }
+ { \njuname [ \c__nju_fmt_namecolor_tl ] {#1} { ! } }
\cs_new_protected:Npn \__nju_abs_bookmark:nn #1#2
{
\phantomsection
\__nju_bookmark:Nnn \g__nju_abs_showentry_bool {#1} {#2}
- \__nju_chapter_header:n { #1 }
+ \__nju_chapter_header:n {#1}
}
\cs_generate_variant:Nn \__nju_abs_bookmark:nn { Vn }
\cs_new_protected:Npn \__nju_abs_title:N #1
@@ -382,7 +368,7 @@
{
\vbox_set:Nn \l__nju_tmpa_box
{
- \__nju_get_width:Nn \tex_hangindent:D { #3 }
+ \__nju_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
@@ -390,7 +376,7 @@
\int_gzero:N \l__nju_tmpa_int
\__nju_breakpar_loop:n { \int_gincr:N \l__nju_tmpa_int }
}
- \__nju_breakpar_print:nn { #3 }
+ \__nju_breakpar_print:nn {#3}
{
\bool_if:NT \g__nju_abs_title_strict_bool
{
@@ -513,6 +499,13 @@
requires~ loading~ the~ class~ with~ "ntheorem"~ option~
set~ to~ "true".
}
+\__nju_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.
+ }
\__nju_msg:nn { missing-title }
{
Thesis~ title~ should~ not~ be~ left~ blank.\\
@@ -605,7 +598,7 @@
\cs_new_protected:cpn { __nju_loadpkg_ #2 : }
{
\bool_if:cT { g__nju_opt_load_ #2 _bool }
- { \RequirePackage { #1 } }
+ { \RequirePackage {#1} }
}
\clist_put_right:Nn \g__nju_name_optional_pkg_clist {#1}
}
@@ -650,22 +643,22 @@
{ \cs_new_eq:NN \__nju_keys_set:nn \keys_set:nn }
\NewDocumentCommand \njusetup { o m }
{
- \tl_if_novalue:nTF { #1 }
- { \__nju_keys_set:nn { nju } { #2 } }
+ \tl_if_novalue:nTF {#1}
+ { \__nju_keys_set:nn { nju } {#2} }
{
- \tl_if_in:nnTF { #1 } { / }
+ \tl_if_in:nnTF {#1} { / }
{ \__nju_keys_set:nn { nju } { #1 = {#2} } }
{ \__nju_keys_set:nn { nju / #1 } {#2} }
}
}
\@onlypreamble \njusetup
\NewDocumentCommand \njusetformat { m m }
- { \tl_gset:cn { c__nju_fmt_ #1 _tl } { #2 } }
+ { \tl_gset:cn { c__nju_fmt_ #1 _tl } {#2} }
\NewDocumentCommand \njusetlength { s m m }
{
- \bool_if:nTF { #1 }
- { \skip_gset:cn { c__nju_ #2 _skip } { #3 } }
- { \dim_gset:cn { c__nju_ #2 _dim } { #3 } }
+ \bool_if:nTF {#1}
+ { \skip_gset:cn { c__nju_ #2 _skip } {#3} }
+ { \dim_gset:cn { c__nju_ #2 _dim } {#3} }
}
\NewDocumentCommand \njusetname { s m O{} m }
{ \__nju_set_tokenlist:nnnnn {#1} {#2} {#3} {#4} { name } }
@@ -673,7 +666,7 @@
{ \__nju_set_tokenlist:nnnnn {#1} {#2} {#3} {#4} { text } }
\cs_new_protected:Npn \__nju_set_tokenlist:nnnnn #1#2#3#4#5
{
- \bool_if:nTF { #1 }
+ \bool_if:nTF {#1}
{ \tl_set_eq:NN \l__nju_tmpb_tl \c__nju_name_suffix_en_tl }
{ \tl_clear:N \l__nju_tmpb_tl }
\tl_gset:cn { c__nju_ #5 _ #2 #3 \l__nju_tmpb_tl _tl } {#4}
@@ -703,7 +696,15 @@
\__nju_loadpkg_fm:
\bool_if:NTF \g__nju_opt_load_um_bool
{ \RequirePackage { unicode-math } }
- { \RequirePackage { amsmath } }
+ {
+ \RequirePackage { amsmath }
+ \bool_if:NT \g__nju_opt_decl_bool
+ {
+ \msg_warning:nn { njuthesis } { missing-symbol }
+ \cs_new:Npn \mdwhtsquare { }
+ \cs_new:Npn \checkmark { }
+ }
+ }
\RequirePackage
{
geometry,
@@ -731,16 +732,16 @@
\RequirePackage { lua-ul }
\NewDocumentCommand \njuline { m } { \underLine{#1} \__nju_null: }
}
-\cs_new_protected:Npn \__nju_check_pkg_version:nnn #1#2#3
+\cs_new:Npn \__nju_check_pkg_version:nnn #1#2#3
{
\@ifpackagelater {#1} {#2}
{ } { \msg_error:nnnn { njuthesis } { package-too-old } {#1} {#3} }
}
\sys_if_engine_luatex:T
{ \__nju_check_pkg_version:nnn { luatexja } { 2021/10/24 } { 20211024.0 } }
-\cs_new_protected:Npn \__nju_check_pkg_conflict:nn #1#2
+\cs_new:Npn \__nju_check_pkg_conflict:nn #1#2
{
- \ctex_at_begin_package:nn { #2 }
+ \ctex_at_begin_package:nn {#2}
{ \msg_warning:nnnn { njuthesis } { package-conflict } {#1} {#2} }
}
\bool_if:NT \g__nju_opt_load_um_bool
@@ -750,7 +751,7 @@
amscd, amsfonts, amssymb, bbm, bm, eucal,
eufrak, mathrsfs, newtxmath, upgreek
}
- { \__nju_check_pkg_conflict:nn { unicode-math } { #1 } }
+ { \__nju_check_pkg_conflict:nn { unicode-math } {#1} }
}
\exp_args:Nx \file_input:n
{
@@ -766,8 +767,8 @@
}
\clist_map_inline:Nn \g__nju_config_clist
{
- \msg_info:nnn { njuthesis } { load-config } { #1 }
- \file_input:n { #1 }
+ \msg_info:nnn { njuthesis } { load-config } {#1}
+ \file_input:n {#1}
}
\keys_define:nn { nju / info }
{
@@ -783,22 +784,22 @@
author* .tl_set:N = \g__nju_info_author_en_tl ,
department .tl_set:N = \g__nju_info_dept_tl ,
department* .tl_set:N = \g__nju_info_dept_en_tl ,
- major .tl_set:N = \g__nju_info_major_tl ,
major* .tl_set:N = \g__nju_info_major_en_tl ,
field .tl_set:N = \g__nju_info_field_tl ,
field* .tl_set:N = \g__nju_info_field_en_tl ,
+ major .code:n =
+ {
+ \clist_pop:NN \l_keys_value_tl \g__nju_info_major_tl
+ \clist_pop:NNF \l_keys_value_tl \g__nju_info_majorc_tl
+ {
+ \tl_set:Nn \g__nju_info_majorc_tl
+ { 工程 \g__nju_info_type_tl( \g__nju_info_major_tl ) }
+ }
+ },
supervisor .clist_set:N = \g__nju_info_supv_clist ,
supervisor* .tl_set:N = \g__nju_info_supv_en_tl ,
supervisor-ii .clist_set:N = \g__nju_info_supvii_clist ,
supervisor-ii* .tl_set:N = \g__nju_info_supvii_en_tl ,
- submit-date .tl_set:N = \g__nju_info_submitdate_raw_tl ,
- submit-date .initial:V = \c__nju_today_tl ,
- defend-date .tl_set:N = \g__nju_info_defenddate_raw_tl ,
- defend-date .initial:V = \c__nju_today_tl ,
- confer-date .tl_set:N = \g__nju_info_conferdate_raw_tl ,
- confer-date .initial:V = \c__nju_today_tl ,
- bottom-date .tl_set:N = \g__nju_info_bottomdate_raw_tl ,
- bottom-date .initial:V = \c__nju_today_tl ,
chairman .tl_set:N = \g__nju_info_chairman_tl ,
reviewer .clist_set:N = \g__nju_info_reviewer_clist ,
clc .tl_set:N = \g__nju_info_clc_tl ,
@@ -809,7 +810,15 @@
school-code .tl_set:N = \g__nju_info_code_tl ,
school-code .initial:n = { 10284 } ,
degree .tl_set:N = \g__nju_info_degree_tl ,
- degree* .tl_set:N = \g__nju_info_degree_en_tl
+ degree* .tl_set:N = \g__nju_info_degree_en_tl ,
+ }
+\clist_map_inline:nn { submit, defend, confer, bottom }
+ {
+ \keys_define:nn { nju / info }
+ {
+ #1-date .code:n = \__nju_date:nn {#1} {##1},
+ #1-date .initial:V = \c__nju_name_today_tl
+ }
}
\clist_map_inline:Nn \c__nju_name_anon_clist
{ \keys_define:nn { nju / info } { #1 .groups:n = { anonymous } } }
@@ -846,7 +855,7 @@
{
\__fontspec_main_setmainfont:nn { } { Times~New~Roman }
\__fontspec_main_setsansfont:nn { } { Arial }
- \__fontspec_main_setmonofont:nn { Scale = MatchLowercase } { #1 }
+ \__fontspec_main_setmonofont:nn { Scale = MatchLowercase } {#1}
}
\cs_new_protected:Npn \__nju_loadfont_latin_win:
{ \__nju_loadfont_latin:n { Courier~New } }
@@ -882,19 +891,20 @@
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic
}
-\cs_new_protected:Npn \__nju_hide_no_script_msg:
+\cs_new:Npn \__nju_hide_no_script_msg:
{ \msg_redirect_name:nnn { fontspec } { no-script } { info } }
-\cs_new_protected:Npn \__nju_loadfont_cjk_win:
- {
- \setCJKmainfont { SimSun }
- [ \c__nju_name_fakebold_tl, ItalicFont = KaiTi ]
- \setCJKsansfont { SimHei } [ \c__nju_name_fakebold_tl ]
- \setCJKmonofont { FangSong } [ \c__nju_name_fakebold_tl ]
- \setCJKfamilyfont { zhsong } { SimSun } [ \c__nju_name_fakebold_tl ]
- \setCJKfamilyfont { zhhei } { SimHei } [ \c__nju_name_fakebold_tl ]
- \setCJKfamilyfont { zhfs } { FangSong } [ \c__nju_name_fakebold_tl ]
- \setCJKfamilyfont { zhkai } { KaiTi } [ \c__nju_name_fakebold_tl ]
- }
+\cs_new:Npn \__nju_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]
+ }
+\cs_new:Npn \__nju_loadfont_cjk_win:
+ { \__nju_loadfont_cjk_win:N \c__nju_name_fakebold_tl }
\cs_new_protected:Npn \__nju_loadfont_cjk_mac:
{
\__nju_hide_no_script_msg:
@@ -945,9 +955,9 @@
\cs_new_protected:Npn \__nju_loadfont_cjk_founder:
{
\sys_if_engine_xetex:T
- { \xeCJKEditPunctStyle {quanjiao} { optimize-kerning = true } }
+ { \xeCJKEditPunctStyle { quanjiao } { optimize-kerning = true } }
\sys_if_engine_luatex:T
- { \defaultCJKfontfeatures { JFM = { zh_CN/{quanjiao,fzpr} } } }
+ { \defaultCJKfontfeatures { JFM = { zh_CN / { quanjiao, fzpr } } } }
\setCJKmainfont { FZShuSong-Z01 }
[ BoldFont = FZXiaoBiaoSong-B05, ItalicFont = FZKai-Z03 ]
\setCJKsansfont { FZXiHeiI-Z08 } [ BoldFont = FZHei-B01 ]
@@ -998,7 +1008,7 @@
ItalicFeatures = FakeSlant,
BoldItalicFeatures = FakeSlant
}
-\cs_new_protected:Npn \__nju_loadfont_stzhongs:
+\cs_new:Npn \__nju_loadfont_stzhongs:
{
\fontspec_font_if_exist:nTF { 华文中宋 }
{
@@ -1013,7 +1023,7 @@
\cs_new:Npn \__nju_define_math_font:nn #1#2
{
\cs_new:cpn { __nju_loadfont_math_ #1 : }
- { \__um_setmathfont:nn { } { #2 } }
+ { \__um_setmathfont:nn { } {#2} }
}
\clist_map_inline:nn
{
@@ -1204,20 +1214,20 @@
\cs_new:Npn \__nju_bookmark_toc:nn #1#2
{ \phantomsection \__nju_bookmark_toc:n {#1} }
\cs_new:Npn \__nju_bookmark_pdf_nosec:nn #1#2
- { \pdfbookmark [0] { #1 } { #2 } }
+ { \pdfbookmark [0] {#1} {#2} }
\cs_new:Npn \__nju_bookmark_pdf:nn #1#2
{ \phantomsection \__nju_bookmark_pdf_nosec:nn {#1} {#2} }
\cs_new:Npn \__nju_bookmark:Nnn #1#2#3
{
\bool_if:NTF #1
- { \__nju_bookmark_toc:n { #2 } }
- { \__nju_bookmark_pdf_nosec:nn { #2 } { #3 } }
+ { \__nju_bookmark_toc:n {#2} }
+ { \__nju_bookmark_pdf_nosec:nn {#2} {#3} }
}
\cs_new:Npn \__nju_chapter:Nnn #1#2#3
{
- \chapter * { #2 }
- \__nju_bookmark:Nnn #1 { #2 } { #3 }
- \__nju_chapter_header:n { #2 }
+ \chapter * {#2}
+ \__nju_bookmark:Nnn #1 {#2} {#3}
+ \__nju_chapter_header:n {#2}
}
\cs_new:Npn \__nju_chapter:n #1
{ \__nju_chapter:Nnn \c_true_bool {#1} { } }
@@ -1226,10 +1236,10 @@
\cs_new_protected:Npn \__nju_chapter_header:n #1
{
\bool_if:NTF \g__nju_opt_twoside_bool
- { \markboth { #1 } { #1 } }
+ { \markboth {#1} {#1} }
{ \markboth { \hfill #1 \hfill } { } }
}
-\NewDocumentCommand \njuchapter { m } { \__nju_chapter:n { #1 } }
+\NewDocumentCommand \njuchapter { m } { \__nju_chapter:n {#1} }
\keys_set:nn { ctex }
{
chapter / beforeskip = \c__nju_chapterbefore_dim,
@@ -1252,7 +1262,7 @@
{ chapter/format = \c__nju_fmt_toctitle_tl }
\__nju_chapter:cnn { g__nju_ #2 _showentry_bool } {#1} {#2}
\group_end:
- \@starttoc { #2 }
+ \@starttoc {#2}
}
\cs_generate_variant:Nn \__nju_make_toc:nn { vn }
\cs_new_protected:Npn \__nju_define_toc_cmd:nnn #1#2#3
@@ -1262,8 +1272,8 @@
toc-entry .bool_set:c = { g__nju_ #3 _showentry_bool },
toc-entry .initial:n = true
}
- \exp_args:Nc \RenewDocumentCommand { #1 } { }
- { \__nju_make_toc:vn { #2 name } { #3 } }
+ \exp_args:Nc \RenewDocumentCommand {#1} { }
+ { \__nju_make_toc:vn { #2 name } {#3} }
}
\clist_map_inline:nn
{
@@ -1322,7 +1332,7 @@
\bool_if:NT \g__nju_opt_load_blx_bool
{
\NewDocumentCommand \addbibresource { m }
- { \clist_gput_right:Nn \g__nju_blx_resource_clist { #1 } }
+ { \clist_gput_right:Nn \g__nju_blx_resource_clist {#1} }
}
\cs_new_protected:Npn \__nju_blx_pre_setup:
{
@@ -1368,7 +1378,7 @@
pdfcreator = \c__nju_name_pdfcreator_tl
}
}
-\cs_new_protected:Npn \__nju_cref_name:n #1
+\cs_new:Npn \__nju_cref_name:n #1
{ \crefname {#1} { \__nju_name:n {#1} } { \__nju_name:n {#1} } }
\bool_if:NT \g__nju_opt_load_cref_bool
{
@@ -1379,7 +1389,7 @@
\crefformat { subsection } { 第~#2#1#3~小节 }
\crefformat { subsubsection } { 第~#2#1#3~小节 }
\clist_map_inline:nn { figure, table, appendix, proof }
- { \__nju_cref_name:n { #1 } }
+ { \__nju_cref_name:n {#1} }
}
\clist_set:Nn \g__nju_fn_ctext_option_clist { charf = \scriptsize }
\keys_define:nn { nju / footnote }
@@ -1428,7 +1438,7 @@
{
\group_begin:
\bool_set_eq:NN \l__circledtext_negative_bool #1
- \__circledtext_handle:Vn \g__nju_fn_ctext_option_clist { #2 }
+ \__circledtext_handle:Vn \g__nju_fn_ctext_option_clist {#2}
\group_end:
}
\cs_generate_variant:Nn \__nju_fn_number_circled:Nn { NV }
@@ -1492,6 +1502,7 @@
\bool_if:NTF \g__nju_opt_load_um_bool
{ \tl_const:Nn \c__nju_name_qed_tl { \ensuremath { \mdlgwhtsquare } } }
{ \tl_const:Nn \c__nju_name_qed_tl { \ensuremath { \rule {1ex} {1ex} } } }
+\tl_new:N \l__nju_thm_share_tl
\keys_define:nn { nju / theorem }
{
style .tl_set:N = \l__nju_thm_style_tl,
@@ -1515,45 +1526,59 @@
{ proof, *+ } { 证明 },
{ theorem } { 定理 }
},
+ share-counter .bool_set:N = \l__nju_thm_share_bool,
+ share-counter .initial:n = false,
define .value_forbidden:n = true,
define .code:n =
{
\clist_if_empty:NT \g__nju_thm_type_clist
{ \msg_error:nn { njuthesis } { empty-theorem-type } }
+ \tl_clear:N \l__nju_thm_share_tl
\clist_map_inline:Nn \g__nju_thm_type_clist
- { \__nju_thm_define:nn ##1 }
+ { \__nju_thm_define:Nnn \l__nju_thm_share_tl ##1 }
}
}
-\cs_new_protected:Npn \__nju_thm_define:nn #1#2
+\cs_new:Npn \__nju_thm_define:Nnn
+ { \__nju_thm_define:NNNNnn \l__nju_tmp_clist \l__nju_tmpa_tl \l__nju_tmpb_tl }
+\cs_new:Npn \__nju_thm_define:NNNNnn #1#2#3#4#5#6
{
\bool_if:NF \g__nju_opt_load_nthm_bool
{ \msg_error:nn { njuthesis } { missing-ntheorem } }
\exp_args:NV \theoremstyle \l__nju_thm_style_tl
\exp_args:NV \theoremheaderfont \l__nju_thm_header_font_tl
\exp_args:NV \theorembodyfont \l__nju_thm_body_font_tl
- \clist_set:Nn \l__nju_tmp_clist { #1 }
- \clist_pop:NN \l__nju_tmp_clist \l__nju_tmpa_tl
- \clist_pop:NN \l__nju_tmp_clist \l__nju_tmpb_tl
- \tl_if_in:NnT \l__nju_tmpb_tl { + }
+ \clist_set:Nn #1 {#5}
+ \clist_pop:NN #1 #2
+ \clist_pop:NN #1 #3
+ \tl_if_in:NnT #3 { + }
{ \exp_args:NV \theoremsymbol \l__nju_thm_qed_symbol_tl }
- \tl_if_in:NnTF \l__nju_tmpb_tl { * }
- { \__nju_thm_new:VVn \l__nju_tmpa_tl \c_novalue_tl {#2} }
- { \__nju_thm_new:VVn \l__nju_tmpa_tl \l__nju_thm_counter_tl {#2} }
+ \tl_if_in:NnTF #3 { * }
+ { \__nju_thm_new:VVVn #2 \c_novalue_tl #4 {#6} }
+ { \__nju_thm_new:VVVn #2 \l__nju_thm_counter_tl #4 {#6} }
+ \bool_if:NT \l__nju_thm_share_bool
+ {
+ \tl_gset_eq:NN #4 #2
+ \bool_gset_false:N \l__nju_thm_share_bool
+ }
\bool_if:NT \g__nju_opt_load_cref_bool
- { \crefname { \l__nju_tmpa_tl } {#2} {#2} }
+ { \exp_args:NV \crefname #2 {#6} {#6} }
\theoremsymbol { }
}
-\cs_new_protected:Npn \__nju_thm_new:nnn #1#2#3
+\cs_new_protected:Npn \__nju_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} {#3} }
- { \newtheorem {#1} {#3} [#2] }
+ { \newtheorem * {#1} {#4} }
+ {
+ \tl_if_empty:nTF {#3}
+ { \newtheorem {#1} {#4} [#2] }
+ { \newtheorem {#1} [#3] {#4} }
+ }
\group_end:
}
-\cs_generate_variant:Nn \__nju_thm_new:nnn { VVn }
+\cs_generate_variant:Nn \__nju_thm_new:nnnn { VVVn }
\bool_new:N \g__nju_opt_math_re_bool
\bool_new:N \g__nju_opt_math_int_bool
\bool_new:N \g__nju_opt_math_leq_bool
@@ -1562,8 +1587,8 @@
{ \tl_set_eq:NN \c__nju_name_integral_tl \l__um_nolimits_tl }
{ \tl_set_eq:NN \c__nju_name_integral_tl \c_empty_tl }
\bool_if:NTF \g__nju_opt_load_um_bool
- { \cs_new:Npn \__nju_um_setup:n #1 { \keys_set:nn { unicode-math } {#1} } }
- { \cs_new:Npn \__nju_um_setup:n #1 { } }
+ { \cs_new:Npn \__nju_um_setup:n #1 { \keys_set:nn { unicode-math } {#1} } }
+ { \cs_new_eq:NN \__nju_um_setup:n \use_none:n }
\keys_define:nn { nju / math }
{
integral .choice:,
@@ -1657,28 +1682,31 @@
},
style .initial:n = GB
}
-\__nju_at_begin_document:n
+\bool_if:NT \g__nju_opt_load_um_bool
{
- \use:c { __nju_loadfont_math_ \g__nju_font_math_tl : }
- \bool_if:NT \g__nju_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__nju_opt_math_re_bool
+ \__nju_at_begin_document:n
{
- \cs_set:Npn \Re { \operatorname { Re } }
- \cs_set:Npn \Im { \operatorname { Im } }
+ \use:c { __nju_loadfont_math_ \g__nju_font_math_tl : }
+ \bool_if:NT \g__nju_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__nju_opt_math_re_bool
+ {
+ \cs_set:Npn \Re { \operatorname { Re } }
+ \cs_set:Npn \Im { \operatorname { Im } }
+ }
+ \bool_if:NT \g__nju_opt_math_vec_bool
+ { \cs_set_eq:NN \vec \symbf }
}
- \bool_if:NT \g__nju_opt_math_vec_bool
- { \cs_set_eq:NN \vec \symbf }
}
\cs_new_protected:Npn \__nju_new_img_cmd:nn #1#2
{
\exp_args:Nc \NewDocumentCommand { nju #1 } { o m m }
- { \includegraphics [ width = ##2, height = ##3 ] { #2 } }
+ { \includegraphics [ width = ##2, height = ##3 ] {#2} }
}
\keys_define:nn { nju / image }
{
@@ -1707,9 +1735,7 @@
\bool_if:NF \g__nju_opt_draft_bool
{
\pagenumbering { gobble }
- \bool_if:NTF \g__nju_opt_nlcover_bool
- { \__nju_make_cover_nl: }
- { \__nju_make_cover: }
+ \__nju_make_cover:
}
\tl_remove_all:Nn \g__nju_info_title_tl { \\ }
\bool_if:NF \g__nju_opt_draft_bool
@@ -1741,7 +1767,7 @@
\advance \leftmargin \l__nju_tmpa_dim
\__nju_cs_clear:N \makelabel
}
- \item \clist_use:cn { g__nju_info_keywords #1 _clist } { #2 }
+ \item \clist_use:cn { g__nju_info_keywords #1 _clist } {#2}
\endlist
}
\skip_new:N \g__nju_abs_title_left_skip
@@ -1810,7 +1836,7 @@
\RenewDocumentCommand \mkbibdateshort { m m m }
{ \textbf { \thefield { ##1 } } }
\newrefsection
- \nocite { #2 }
+ \nocite {#2}
\printbibliography [ heading = subbibliography, title = #1 ]
\endrefsection
\group_end:
@@ -1834,13 +1860,13 @@
\NewDocumentEnvironment { notation } { O { 10 em } O { 5 em } }
{
\__nju_chapter:V \c__nju_name_notation_tl
- \__nju_make_notation:nn { #1 } { #2 }
+ \__nju_make_notation:nn {#1} {#2}
}
{ \endlist \cleardoublepage }
\NewDocumentEnvironment { notation* } { O { 10 em } O { 5 em } }
{
\chapter * { \c__nju_name_notation_tl }
- \__nju_make_notation:nn { #1 } { #2 }
+ \__nju_make_notation:nn {#1} {#2}
}
{ \endlist \cleardoublepage }
\endinput