diff options
author | Karl Berry <karl@freefriends.org> | 2024-03-19 20:38:58 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-03-19 20:38:58 +0000 |
commit | 164d3fae5bf2c573dc2260fca75dce114ddd51cf (patch) | |
tree | 4dbb02bb06fef6305db9ec2ea3c9a5d11d54fc76 /Master/texmf-dist/tex | |
parent | 96e5952276ff4da2ecceacb9544371590343c126 (diff) |
njuthesis (19mar24)
git-svn-id: svn://tug.org/texlive/trunk@70705 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
5 files changed, 479 insertions, 393 deletions
diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-doc.cls b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-doc.cls index f1809cda0a5..6ab2fac855c 100644 --- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-doc.cls +++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-doc.cls @@ -6,7 +6,7 @@ %% %% njuthesis.dtx (with options: `doc-cls') %% -%% Copyright (C) 2021 - 2023 +%% Copyright (C) 2021 - 2024 %% by Nanjing University Linux User Group %% <git+nju-lug-email-3104-issue-@yaoge123.cn> %% @@ -23,7 +23,7 @@ %% To produce the documentation run the original source files ending with %% `.dtx' through XeTeX. %% -\GetIdInfo $Id: njuthesis.dtx 1.3.2 2023-12-05 16:30:00 +\GetIdInfo $Id: njuthesis.dtx 1.4.0 2024-03-19 20:30:00 +0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$ {Documentation style for njuthesis} \ProvidesExplFile{njuthesis-doc.cls} @@ -32,8 +32,8 @@ \RequirePackage { l3keys2e } \keys_define:nn { njudoc } { - codehigh .bool_set:N = \g__njudoc_codehigh_bool, - codehigh .initial:n = false + codehigh .bool_gset:N = \g__njudoc_codehigh_bool, + codehigh .initial:n = false } \ProcessKeysOptions { njudoc } \PassOptionsToPackage { fontset = fandol } { ctex } @@ -61,8 +61,19 @@ \NewDocumentCommand \CJKsout { o m } { \textcolor { black!50 } {#1} } } -\cs_if_exist:NF \__codedoc_get_hyper_target:xN - { \cs_new_eq:NN \__codedoc_get_hyper_target:xN \__codedoc_get_hyper_target:eN } +\cs_generate_variant:Nn \__codedoc_get_hyper_target:nN { x } +\cs_generate_variant:Nn \tl_replace_all:Nnn { No } +\cs_if_exist:NF \__codedoc_macroname_prefix:o + { + \cs_new_protected:Npn \__codedoc_macroname_prefix:n #1 + { + \__codedoc_if_macro_internal:nTF {#1} + { \__codedoc_typeset_aux:n {#1} } {#1} + } + \cs_generate_variant:Nn \__codedoc_macroname_prefix:n { o } + \cs_new_protected:Npn \__codedoc_macroname_suffix:N #1 + { \bool_if:NTF #1 { \__codedoc_typeset_TF: } { } } + } \backgroundsetup{ contents={\njuemblem[white!85!gray]{22cm}{!}}, scale=1, angle=0, hshift=-4cm diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def index f8e42af7e42..2e4bbbaf95d 100644 --- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def +++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def @@ -6,7 +6,7 @@ %% %% njuthesis.dtx (with options: `def-g') %% -%% Copyright (C) 2021 - 2023 +%% Copyright (C) 2021 - 2024 %% by Nanjing University Linux User Group %% <git+nju-lug-email-3104-issue-@yaoge123.cn> %% @@ -23,7 +23,7 @@ %% To produce the documentation run the original source files ending with %% `.dtx' through XeTeX. %% -\GetIdInfo $Id: njuthesis.dtx 1.3.2 2023-12-05 16:30:00 +\GetIdInfo $Id: njuthesis.dtx 1.4.0 2024-03-19 20:30:00 +0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$ {Graduate definition file for njuthesis} \ProvidesExplFile{njuthesis-graduate.def} @@ -33,26 +33,26 @@ \cs_set:Npn \__nju_date:nn #1#2 { \__nju_date:nnn { } {#1} {#2} \__nju_date:nnn { _en } {#1} {#2} } \tl_new:N \g__nju_info_confer_tl -\tl_set:Nn \g__nju_info_confer_tl +\tl_gset:Nn \g__nju_info_confer_tl { - \textbf { \c__nju_name_nju_tl } \hfil + \textbf { \l__nju_name_nju_tl } \hfil \g__nju_info_conferdate_tl } \tl_new:N \g__nju_info_type_tl -\tl_set:Ne \g__nju_info_type_tl +\tl_gset:Ne \g__nju_info_type_tl { \clist_item:Nn \c__nju_name_type_clist { \g__nju_info_type_int } } \tl_new:N \g__nju_info_degree_tl -\tl_set_eq:NN \g__nju_info_degree_tl \g__nju_info_type_tl +\tl_gset_eq:NN \g__nju_info_degree_tl \g__nju_info_type_tl \bool_if:NF \g__nju_opt_academic_bool - { \tl_put_right:Nn \g__nju_info_degree_tl { 专业 } } + { \tl_gput_right:Nn \g__nju_info_degree_tl { 专业 } } \tl_new:N \g__nju_info_degree_en_tl -\tl_set:Ne \g__nju_info_degree_en_tl +\tl_gset:Ne \g__nju_info_degree_en_tl { \clist_item:Nn \c__nju_name_type_en_clist { \g__nju_info_type_int } } \ctex_at_end_preamble:n { \__nju_loadfont_stzhongs: } \cs_new_protected:Npn \__nju_decl_sign: { \clist_map_inline:nn { origsign, date } - { \tex_par:D \__nju_name:n { ##1 } : \hbox_to_wd:nn { 6 em } { } } + { \tex_par:D \__nju_name:n {##1} : \hbox_to_wd:nn { 6 em } { } } } \__nju_declare_element:nn { g / cover-front / top } { @@ -65,12 +65,12 @@ } \__nju_declare_element:nn { g / cover-front / emblem-img } { - content = \__nju_emblem:N \c__nju_emblemwd_dim, + content = \__nju_emblem:N \l__nju_emblemwd_dim, bottom-skip = .47 cm } \__nju_declare_element:nn { g / cover-front / name-img } { - content = \__nju_name:N \c__nju_namewd_dim, + content = \__nju_name:N \l__nju_namewd_dim, bottom-skip = 2.25 cm } \__nju_declare_element:nn { g / cover-front / type } @@ -97,8 +97,8 @@ \__nju_get_width:NV \l__nju_tmpb_dim \g__nju_info_id_tl \clist_map_inline:nn { code, clc, secretlv, udc, id } { - \__nju_cover_entry:NNNNn \c__nju_name_colon_tl \l__nju_tmpa_dim - \l__nju_tmpb_dim \tex_relax:D { ##1 } + \__nju_cover_entry:NNNNn \l__nju_name_colon_tl \l__nju_tmpa_dim + \l__nju_tmpb_dim \tex_relax:D {##1} } } \cs_new_protected:Npn \__nju_g_cover_info:NNNNN #1#2#3#4#5 @@ -108,13 +108,13 @@ { \clist_set:Nn #1 { author, majorc, field, supvfull } } \__nju_cover_entry_title:NNNN #2 #3 #4 #5 \clist_map_inline:Nn #1 - { \__nju_cover_entry:NNNNn #2 #3 #4 #5 { ##1 } } + { \__nju_cover_entry:NNNNn #2 #3 #4 #5 {##1} } } \cs_new:Npn \__nju_g_cover_info: { \tl_set:Nn \l__nju_tmpa_tl { \skip_horizontal:n { .7 cm } } \__nju_g_cover_info:NNNNN \l__nju_tmp_clist \l__nju_tmpa_tl - \c__nju_clabelwd_dim \c__nju_crulewd_dim \c__nju_fmt_coverlabel_tl + \l__nju_clabelwd_dim \l__nju_crulewd_dim \l__nju_fmt_coverlabel_tl } \__nju_declare_element:nn { g / cover-back / info } { @@ -143,8 +143,8 @@ } \cs_new:Npn \__nju_g_cover_back: { - \__nju_g_cover_back:NNN \c__nju_clabelwdi_dim - \c__nju_crulewdi_dim \c__nju_fmt_coverlabel_tl + \__nju_g_cover_back:NNN \l__nju_clabelwdi_dim + \l__nju_crulewdi_dim \l__nju_fmt_coverlabel_tl } \cs_new_protected:Npn \__nju_g_cover_sign:NNN #1#2#3 { @@ -153,8 +153,8 @@ } \cs_new:Npn \__nju_g_cover_sign: { - \__nju_g_cover_sign:NNN \c__nju_clabelwdii_dim - \c__nju_fmt_coverlabel_tl \c__nju_name_colon_tl + \__nju_g_cover_sign:NNN \l__nju_clabelwdii_dim + \l__nju_fmt_coverlabel_tl \l__nju_name_colon_tl } \__nju_declare_element:nn { g / cover-en / title } { @@ -179,21 +179,21 @@ \__nju_declare_element:nn { g / cover-en / middle } { content = - \c__nju_text_cover_en_tl \__nju_vskip: + \l__nju_text_cover_en_tl \__nju_vskip: \group_begin: \scshape \g__nju_info_degree_en_tl \group_end: \__nju_vskip: { in } \__nju_vskip: \g__nju_info_major_en_tl, bottom-skip = .5 cm plus 1 fil } \__nju_declare_element:nn { g / cover-en / emblem-img } { - content = \__nju_emblem:N \c__nju_emblemwdii_dim, + content = \__nju_emblem:N \l__nju_emblemwdii_dim, bottom-skip = 1 cm minus .5 cm } \__nju_declare_element:nn { g / cover-en / bottom } { content = \g__nju_info_dept_en_tl \skip_vertical:N \c_zero_skip - \c__nju_name_nju_en_tl \skip_vertical:n { 1 cm } + \l__nju_name_nju_en_tl \skip_vertical:n { 1 cm } \g__nju_info_submitdate_en_tl } \__nju_declare_element:nn { cover-nl / top } @@ -232,28 +232,30 @@ content = \g__nju_info_bottomdate_tl, format = \kaishu \zihao { 3 } } -\cs_new_protected:Npn \__nju_cover_top_nl: - { - \dim_set:Nn \l__nju_tmpa_dim { 38.6 pt } - \dim_set:Nn \l__nju_tmpb_dim { 109 pt } - \__nju_box_spread_name:Nn \l__nju_tmpa_dim { clc } \__nju_hskip: - \__nju_box_ulined_info:Nn \l__nju_tmpb_dim { clc } \tex_hfill:D - \__nju_box_spread_name:Nn \l__nju_tmpa_dim { secretlv } \__nju_hskip: - \__nju_box_ulined_info:Nn \l__nju_tmpb_dim { secretlv } \tex_par:D - \__nju_box_spread_name:Nn \l__nju_tmpa_dim { udc } \__nju_hskip: - \__nju_box_ulined_info:Nn \l__nju_tmpb_dim { udc } \tex_hfill:D +\cs_new:Npn \__nju_cover_top_nl: + { \__nju_cover_top_nl:NN \l__nju_tmpa_dim \l__nju_tmpb_dim } +\cs_new_protected:Npn \__nju_cover_top_nl:NN #1#2 + { + \dim_set:Nn #1 { 38.6 pt } + \dim_set:Nn #2 { 109 pt } + \__nju_box_spread_name:Nn #1 { clc } \__nju_hskip: + \__nju_box_ulined_info:Nn #2 { clc } \tex_hfill:D + \__nju_box_spread_name:Nn #1 { secretlv } \__nju_hskip: + \__nju_box_ulined_info:Nn #2 { secretlv } \tex_par:D + \__nju_box_spread_name:Nn #1 { udc } \__nju_hskip: + \__nju_box_ulined_info:Nn #2 { udc } \tex_hfill:D \__nju_null: } \cs_new_protected:Npn \__nju_cover_title_nl: { \parbox [ b ] { 15 em } { \__nju_uline_title: } \tex_par:D \skip_vertical:n { - 0.5 cm } - { \zihao { 4 } \c__nju_name_subtitle_tl } + { \zihao { 4 } \l__nju_name_subtitle_tl } \skip_vertical:N \c_zero_skip \dim_set:Nn \l__nju_tmpa_dim { 4.5 em } \__nju_box_ulined_info:Nn \l__nju_tmpa_dim { author } \skip_vertical:n { - 0.5 cm } - { \zihao { 4 } { ( } \c__nju_name_author_tl { ) } } + { \zihao { 4 } { ( } \l__nju_name_author_tl { ) } } } \cs_new_protected:Npn \__nju_cover_info_nl: { @@ -265,9 +267,9 @@ } \skip_set:Nn \l__nju_tmp_skip { .5 em plus 1 fill } \__nju_uline_list:NNn \l__nju_tmpa_tl \l__nju_tmp_skip - { \c__nju_name_supvinfo_tl } + { \l__nju_name_supvinfo_tl } \group_begin: - \tl_set_eq:NN \c__nju_name_major_tl \c__nju_name_majorb_tl + \tl_set_eq:NN \l__nju_name_major_tl \l__nju_name_majorb_tl \__nju_uline_bientry:Nn \l__nju_tmpa_dim { degree } \__nju_uline_bientry:Nn \l__nju_tmpa_dim { major } \tex_par:D @@ -287,13 +289,13 @@ } \__nju_declare_element:nn { g / decl / orig / title } { - content = \c__nju_name_origdecl_tl, - format = \c__nju_fmt_chapter_tl, - bottom-skip = \c__nju_chapterafter_dim + content = \l__nju_name_origdecl_tl, + format = \l__nju_fmt_chapter_tl, + bottom-skip = \l__nju_chapterafter_dim } \__nju_declare_element:nn { g / decl / orig / text } { - content = \c__nju_text_origdecl_tl, + content = \l__nju_text_origdecl_tl, align = n, bottom-skip = 0 pt plus 1 fil } @@ -304,13 +306,13 @@ } \__nju_declare_element:nn { g / decl / auth / title } { - content = \c__nju_name_authdecl_tl, - format = \c__nju_fmt_chapter_tl, - bottom-skip = \c__nju_chapterafter_dim + content = \l__nju_name_authdecl_tl, + format = \l__nju_fmt_chapter_tl, + bottom-skip = \l__nju_chapterafter_dim } \__nju_declare_element:nn { g / decl / auth / text } { - content = \c__nju_text_authdecl_tl, + content = \l__nju_text_authdecl_tl, align = n, bottom-skip = 2 cm } @@ -354,35 +356,32 @@ 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__nju_name_titlec_tl & \g__nju_info_title_tl \\ - \c__nju_name_ida_tl & \g__nju_info_id_tl & - \c__nju_name_depta_tl & \g__nju_info_dept_tl & - \c__nju_name_year_tl & + \l__nju_name_titlec_tl & \g__nju_info_title_tl \\ + \l__nju_name_ida_tl & \g__nju_info_id_tl & + \l__nju_name_depta_tl & \g__nju_info_dept_tl & + \l__nju_name_year_tl & \tl_range:Nnn \g__nju_info_submitdate_tl {1} {4} \\ - \c__nju_name_degreea_tl & + \l__nju_name_degreea_tl & { \__nju_degree_checkbox:nn { } { 2 } 学术学位硕士 \qquad \__nju_degree_checkbox:nn { ! } { 2 } 专业学位硕士 \\ \__nju_degree_checkbox:nn { } { 3 } 学术学位博士 \qquad \__nju_degree_checkbox:nn { ! } { 3 } 专业学位博士 } \\ - \c__nju_name_email_tl & \g__nju_info_email_tl \\ - \c__nju_name_supvb_tl & + \l__nju_name_email_tl & \g__nju_info_email_tl \\ + \l__nju_name_supvb_tl & \clist_item:Nn \g__nju_info_supv_clist { 1 } \bool_if:NT \g__nju_opt_supvii_bool { \__nju_quad: \clist_item:Nn \g__nju_info_supvii_clist { 1 } } \\ \end{tblr} } \cs_new_protected:Npn \__nju_g_decl_auth_sign: - { - \c__nju_name_authsign_tl \tex_par:D - \c__nju_name_blankdatea_tl - } + { \l__nju_name_authsign_tl \tex_par:D \l__nju_name_blankdatea_tl } \cs_new_protected:Npn \__nju_g_decl_auth_secretlv: { - \c__nju_name_secretstatus_tl \tex_par:D - \ensuremath { \mdwhtsquare } \c__nju_name_secretfree_tl \tex_par:D - \ensuremath { \mdwhtsquare } \c__nju_name_secretdate_tl + \l__nju_name_secretstatus_tl \tex_par:D + \ensuremath { \mdwhtsquare } \l__nju_name_secretfree_tl \tex_par:D + \ensuremath { \mdwhtsquare } \l__nju_name_secretdate_tl } \__nju_declare_page:nn { cover-g-front } { @@ -415,18 +414,18 @@ { element = { title, text, sign }, prefix = g / decl / orig /, - top-skip = \c__nju_chapterbefore_dim, + top-skip = \l__nju_chapterbefore_dim, bottom-skip = 0 pt plus 1 fil, - bm-text = \c__nju_name_origdecl_tl, + bm-text = \l__nju_name_origdecl_tl, bm-name = origdecl } \__nju_declare_page:nn { authdecl-g } { element = { title, text, sign, info, date }, prefix = g / decl / auth /, - top-skip = \c__nju_chapterbefore_dim, + top-skip = \l__nju_chapterbefore_dim, bottom-skip = 0.5 cm plus 1.5 fill, - bm-text = \c__nju_name_authdecl_tl, + bm-text = \l__nju_name_authdecl_tl, bm-name = authdecl, bookmark = toc } @@ -457,13 +456,13 @@ } \__nju_declare_element:nn { abstract / title } { - content = \__nju_abs_title:N \c__nju_name_abstracttitle_tl, + content = \__nju_abs_title:N \l__nju_name_abstracttitle_tl, format = \bfseries \kaishu \zihao { -2 }, bottom-skip = 20 pt } \__nju_declare_element:nn { abstract / en / title } { - content = \__nju_abs_title:N \c__nju_name_abstracttitle_en_tl, + content = \__nju_abs_title:N \l__nju_name_abstracttitle_en_tl, format = \bfseries \kaishu \zihao { -2 }, bottom-skip = 20 pt } @@ -483,35 +482,35 @@ } \__nju_declare_element:nn { abstract / mark } { - content = \c__nju_name_abstractb_tl, + content = \l__nju_name_abstractb_tl, format = \sffamily \zihao { -3 }, bottom-skip = 15 pt } \__nju_declare_element:nn { abstract / en / mark } { - content = \c__nju_name_abstractb_en_tl, + content = \l__nju_name_abstractb_en_tl, format = \sffamily \zihao { -3 }, bottom-skip = 15 pt } \cs_new_protected:Npn \__nju_abs_info_g: - { \__nju_abs_info_g:N \c__nju_name_colon_tl } + { \__nju_abs_info_g:N \l__nju_name_colon_tl } \cs_new_protected:Npn \__nju_abs_info_en_g: - { \__nju_abs_info_en_g:N \c__nju_name_colon_en_tl } + { \__nju_abs_info_en_g:N \l__nju_name_colon_en_tl } \cs_new_protected:Npn \__nju_abs_info_g:N #1 { \__nju_uline_list:NNe \g__nju_info_title_tl \g__nju_abs_title_left_skip - { \c__nju_name_titlea_tl #1 } + { \l__nju_name_titlea_tl #1 } \__nju_get_width_print:Ne \l__nju_tmp_skip { \dim_set:Nn \l__nju_tmpa_dim { 11 em } \dim_set:Nn \l__nju_tmpb_dim { 4 em } \__nju_box_ulined_info:Nn \l__nju_tmpa_dim { major } - \c__nju_name_majora_tl + \l__nju_name_majora_tl \__nju_box_ulined_info:Nn \l__nju_tmpb_dim { grade } - \c__nju_name_grade_tl \c__nju_name_authora_tl #1 + \l__nju_name_grade_tl \l__nju_name_authora_tl #1 } \__nju_box_ulined_info:Nn \l__nju_tmp_skip { author } \tex_par:D - \__nju_get_width_print:Ne \l__nju_tmpa_dim { \c__nju_name_supva_tl #1 } + \__nju_get_width_print:Ne \l__nju_tmpa_dim { \l__nju_name_supva_tl #1 } \__nju_box_ulined_info:Nn \l__nju_tmpa_dim { supvfull } } \cs_new_protected:Npn \__nju_abs_info_en_g:N #1 @@ -519,7 +518,7 @@ \bool_if:NTF \g__nju_abs_underline_bool { \__nju_uline_list:NNe \g__nju_info_title_en_tl - \g__nju_abs_title_left_skip { \c__nju_name_title_en_tl #1 } + \g__nju_abs_title_left_skip { \l__nju_name_title_en_tl #1 } \clist_map_inline:nn { major, author, supvfull } { \tex_par:D @@ -582,8 +581,8 @@ { secret status } { 论文涉密情况: }, { secret free } { 不保密 }, { secret date } - { 保密,保密期( \c__nju_name_blankdatea_tl 至 - \c__nju_name_blankdatea_tl ) }, + { 保密,保密期( \l__nju_name_blankdatea_tl 至 + \l__nju_name_blankdatea_tl ) }, { sign } { (签字) }, { sign a } { 研究生签名 }, { sign b } { 导师签名 }, @@ -611,8 +610,8 @@ { abstract a } { 中文摘要 } { ABSTRACT }, { abstract b } { 摘\qquad{}要 } { ABSTRACT }, { abstracttitle } - { \c__nju_name_nju_tl 研究生毕业论文中文摘要首页用纸 } - { \c__nju_name_nju_tl 研究生毕业论文英文摘要首页用纸 }, + { \l__nju_name_nju_tl 研究生毕业论文中文摘要首页用纸 } + { \l__nju_name_nju_tl 研究生毕业论文英文摘要首页用纸 }, { appendix } { 附录 } { appendix }, { author } { 作者姓名 } { POSTGRADUATE }, { blankdate } { \qquad{}年 \quad{}月 \quad{}日 } { }, @@ -632,7 +631,7 @@ { type } { 学位论文 } { g } } { \__nju_define_name:nnn #1 } -\tl_const:Nn \c__nju_text_origdecl_tl +\tl_set:Nn \l__nju_text_origdecl_tl { 本人郑重声明,所提交的学位论文是本人在导师指导下独立进行科学研究工作所 取得的成果。除本论文中已经注明引用的内容外,本论文不包含其他个人或集体 @@ -640,7 +639,7 @@ 证书而使用过的材料。对本文的研究做出重要贡献的个人和集体,均已在论文的 致谢部分明确标明。本人郑重申明愿承担本声明的法律责任。 } -\tl_const:Nn \c__nju_text_authdecl_tl +\tl_set:Nn \l__nju_text_authdecl_tl { 本人完全同意《中国优秀博硕士学位论文全文数据库出版章程》(以下简称“章 程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《 @@ -650,10 +649,10 @@ 总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意 按“章程”规定享受相关权益。 } -\tl_const:Nn \c__nju_text_cover_en_tl +\tl_set:Nn \l__nju_text_cover_en_tl { A~ dissertation~ submitted~ to \\ - the~ graduate~ school~ of~ \c__nju_name_nju_en_tl \\ + the~ graduate~ school~ of~ \l__nju_name_nju_en_tl \\ in~ partial~ fulfilment~ of~ the~ requirements~ for~ the~ degree~ of } \clist_map_inline:nn @@ -689,12 +688,12 @@ { emblem color } { black }, { name color } { black }, { section } { \bigger \normalfont \sffamily }, - { chapter } { \c__nju_fmt_section_tl \centering }, - { subsection } { \c__nju_fmt_section_tl }, - { subsubsection } { \c__nju_fmt_section_tl }, - { paragraph } { \c__nju_fmt_section_tl }, - { subparagraph } { \c__nju_fmt_section_tl }, - { chapterintoc } { \c__nju_fmt_section_tl }, + { chapter } { \l__nju_fmt_section_tl \centering }, + { subsection } { \l__nju_fmt_section_tl }, + { subsubsection } { \l__nju_fmt_section_tl }, + { paragraph } { \l__nju_fmt_section_tl }, + { subparagraph } { \l__nju_fmt_section_tl }, + { chapterintoc } { \l__nju_fmt_section_tl }, { tabular } { \zihao { 5 } }, { toc title } { \centering \zihao { 3 } \bfseries }, { header } { \small \kaishu }, diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def index 7150de4a320..4fd12af3b1a 100644 --- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def +++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def @@ -6,7 +6,7 @@ %% %% njuthesis.dtx (with options: `def-p') %% -%% Copyright (C) 2021 - 2023 +%% Copyright (C) 2021 - 2024 %% by Nanjing University Linux User Group %% <git+nju-lug-email-3104-issue-@yaoge123.cn> %% @@ -23,7 +23,7 @@ %% To produce the documentation run the original source files ending with %% `.dtx' through XeTeX. %% -\GetIdInfo $Id: njuthesis.dtx 1.3.2 2023-12-05 16:30:00 +\GetIdInfo $Id: njuthesis.dtx 1.4.0 2024-03-19 20:30:00 +0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$ {Postdoctoral definition file for njuthesis} \ProvidesExplFile{njuthesis-postdoctoral.def} @@ -31,33 +31,32 @@ \__nju_declare_element:nn { p / cover / name-img } { - content = \__nju_name:N \c__nju_namewd_dim, + content = \__nju_name:N \l__nju_namewd_dim, bottom-skip = 40 pt } \__nju_declare_element:nn { p / cover / report } { - content = \c__nju_name_report_tl, + content = \l__nju_name_report_tl, format = \zihao { 0 } \sffamily, bottom-skip = 40 pt plus 1.5 fil } \__nju_declare_element:nn { p / cover / title } { content = - \c__nju_name_title_tl - \c__nju_name_colon_tl + \l__nju_name_title_tl + \l__nju_name_colon_tl \g__nju_info_title_tl, format = \zihao { 4 }, bottom-skip = 80 pt } \__nju_declare_element:nn { p / cover / info } { - content = - \__nju_p_cover_info:NN - \c__nju_clabelwd_dim - \c__nju_fmt_coverlabel_tl, + content = \__nju_p_cover_info:, format = \zihao { -4 }, bottom-skip = 0 pt } +\cs_new:Npn \__nju_p_cover_info: + { \__nju_p_cover_info:NN \l__nju_clabelwd_dim \l__nju_fmt_coverlabel_tl } \cs_new_protected:Npn \__nju_p_cover_info:NN #1#2 { \clist_set:Nn \l__nju_tmp_clist @@ -65,21 +64,21 @@ \__nju_get_max_width:NN \l__nju_tmpb_dim \l__nju_tmp_clist \clist_map_inline:Nn \l__nju_tmp_clist { - \__nju_box_spread_name:NNn #1 #2 { ##1 } - \c__nju_name_colon_tl - \__nju_box_center:Nn \l__nju_tmpb_dim { \__nju_info:n { ##1 } } + \__nju_box_spread_name:NNn #1 #2 {##1} + \l__nju_name_colon_tl + \__nju_box_center:Nn \l__nju_tmpb_dim { \__nju_info:n {##1} } \tex_par:D } } \__nju_declare_element:nn { p / decl / orig / title } { - content = \c__nju_name_origdecl_tl, - format = \c__nju_fmt_chapter_tl, - bottom-skip = \c__nju_chapterafter_dim + content = \l__nju_name_origdecl_tl, + format = \l__nju_fmt_chapter_tl, + bottom-skip = \l__nju_chapterafter_dim } \__nju_declare_element:nn { p / decl / orig / text } { - content = \c__nju_text_origdecl_tl, + content = \l__nju_text_origdecl_tl, align = n, bottom-skip = 2 cm } @@ -90,13 +89,13 @@ } \__nju_declare_element:nn { p / decl / auth / title } { - content = \c__nju_name_authdecl_tl, - format = \c__nju_fmt_chapter_tl, - bottom-skip = \c__nju_chapterafter_dim + content = \l__nju_name_authdecl_tl, + format = \l__nju_fmt_chapter_tl, + bottom-skip = \l__nju_chapterafter_dim } \__nju_declare_element:nn { p / decl / auth / text } { - content = \c__nju_text_authdecl_tl, + content = \l__nju_text_authdecl_tl, align = n, bottom-skip = 2 cm } @@ -109,8 +108,8 @@ } \cs_new_protected:Npn \__nju_p_decl_sign:nn #1#2 { - \__nju_name:n {#1} \c__nju_name_colon_tl \tex_hfill:D - \__nju_name:n {#2} \c__nju_name_colon_tl + \__nju_name:n {#1} \l__nju_name_colon_tl \tex_hfill:D + \__nju_name:n {#2} \l__nju_name_colon_tl \skip_horizontal:n { 160 pt } \__nju_null: \__nju_vskip: } \__nju_declare_page:nn { cover-p } @@ -130,7 +129,7 @@ prefix = p / decl /, bm-text = 声明页, bm-name = decl, - top-skip = \c__nju_chapterbefore_dim, + top-skip = \l__nju_chapterbefore_dim, bottom-skip = 0 pt } \cs_new_protected:Npn \__nju_make_cover: @@ -160,13 +159,13 @@ } \__nju_declare_element:nn { abstract / mark } { - content = \c__nju_name_abstractb_tl, + content = \l__nju_name_abstractb_tl, format = \sffamily \zihao { -3 }, bottom-skip = 15 pt } \__nju_declare_element:nn { abstract / en / mark } { - content = \c__nju_name_abstractb_en_tl, + content = \l__nju_name_abstractb_en_tl, format = \sffamily \zihao { -3 }, bottom-skip = 15 pt } @@ -227,14 +226,14 @@ { table } { 表 } { table }, } { \__nju_define_name:nnn #1 } -\tl_const:Nn \c__nju_text_origdecl_tl +\tl_set:Nn \l__nju_text_origdecl_tl { 本人郑重声明:所呈交的研究报告,是本人独立进行研究工作所取得的成果。除 文中已经注明引用的内容外,本报告不含任何其他个人或集体已经发表或撰写过 的作品成果。对本报告的研究做出重要贡献的个人和集体,均已在报告中以明确 方式标明。本人完全意识到本声明的法律结果由本人承担。 } -\tl_const:Nn \c__nju_text_authdecl_tl +\tl_set:Nn \l__nju_text_authdecl_tl { 本研究报告作者完全了解南京大学有关保留和使用该报告的规定,即:博士后在 职期间的知识产权单位属南京大学。学校有权保留并向国家有关部门或机构送交 @@ -267,12 +266,12 @@ { emblem color } { black }, { name color } { black }, { section } { \bigger \normalfont \sffamily }, - { chapter } { \c__nju_fmt_section_tl \centering }, - { subsection } { \c__nju_fmt_section_tl }, - { subsubsection } { \c__nju_fmt_section_tl }, - { paragraph } { \c__nju_fmt_section_tl }, - { subparagraph } { \c__nju_fmt_section_tl }, - { chapterintoc } { \c__nju_fmt_section_tl }, + { chapter } { \l__nju_fmt_section_tl \centering }, + { subsection } { \l__nju_fmt_section_tl }, + { subsubsection } { \l__nju_fmt_section_tl }, + { paragraph } { \l__nju_fmt_section_tl }, + { subparagraph } { \l__nju_fmt_section_tl }, + { chapterintoc } { \l__nju_fmt_section_tl }, { tabular } { \zihao { 5 } }, { toc title } { \centering \zihao { 3 } \bfseries }, { header } { \small \kaishu }, diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def index 9f78082444c..a2120d56bd0 100644 --- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def +++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def @@ -6,7 +6,7 @@ %% %% njuthesis.dtx (with options: `def-u') %% -%% Copyright (C) 2021 - 2023 +%% Copyright (C) 2021 - 2024 %% by Nanjing University Linux User Group %% <git+nju-lug-email-3104-issue-@yaoge123.cn> %% @@ -23,7 +23,7 @@ %% To produce the documentation run the original source files ending with %% `.dtx' through XeTeX. %% -\GetIdInfo $Id: njuthesis.dtx 1.3.2 2023-12-05 16:30:00 +\GetIdInfo $Id: njuthesis.dtx 1.4.0 2024-03-19 20:30:00 +0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$ {Undergraduate definition file for njuthesis} \ProvidesExplFile{njuthesis-undergraduate.def} @@ -31,12 +31,12 @@ \__nju_declare_element:nn { u / cover / emblem-img } { - content = \__nju_emblem:N \c__nju_emblemwd_dim, + content = \__nju_emblem:N \l__nju_emblemwd_dim, bottom-skip = 1.2 cm } \__nju_declare_element:nn { u / cover / name-img } { - content = \__nju_name:N \c__nju_namewd_dim, + content = \__nju_name:N \l__nju_namewd_dim, bottom-skip = 1 cm, } \__nju_declare_element:nn { u / cover / title } @@ -65,23 +65,23 @@ } \cs_new:Npn \__nju_u_cover_info: { - \__nju_u_cover_info:NNNN \c__nju_clabelwd_dim \c__nju_crulewd_dim - \c__nju_hsep_dim \kaishu + \__nju_u_cover_info:NNNN \l__nju_clabelwd_dim \l__nju_crulewd_dim + \l__nju_hsep_dim \kaishu } \__nju_declare_element:nn { u / decl / orig / emblem } { - content = \__nju_emblem:N \c__nju_emblemwdi_dim, + content = \__nju_emblem:N \l__nju_emblemwdi_dim, bottom-skip = 30 pt } \__nju_declare_element:nn { u / decl / orig / title } { - content = \c__nju_name_origdecl_tl, + content = \l__nju_name_origdecl_tl, format = \sffamily \__nju_fontsize:nn { 24 bp } { 22.15 bp } \bfseries, bottom-skip = 50 pt } \__nju_declare_element:nn { u / decl / orig / text } { - content = \c__nju_text_origdecl_tl, + content = \l__nju_text_origdecl_tl, format = \__nju_zihao:nn { 1.9 } { -3 }, align = n, bottom-skip = 2.7 cm @@ -95,7 +95,7 @@ \cs_new_protected:Npn \__nju_decl_sign: { \clist_map_inline:nn { origsign, id, date } - { \tex_par:D \__nju_name:n { ##1 } : \hbox_to_wd:nn { 6 em } { } } + { \tex_par:D \__nju_name:n {##1} : \hbox_to_wd:nn { 6 em } { } } } \__nju_declare_page:nn { cover-u } { @@ -125,13 +125,13 @@ } \__nju_declare_element:nn { abstract / title } { - content = \__nju_abs_title:N \c__nju_name_abstracttitle_tl, + content = \__nju_abs_title:N \l__nju_name_abstracttitle_tl, format = \bfseries \kaishu \zihao { -2 }, bottom-skip = 20 pt } \__nju_declare_element:nn { abstract / en / title } { - content = \__nju_abs_title:N \c__nju_name_abstracttitle_en_tl, + content = \__nju_abs_title:N \l__nju_name_abstracttitle_en_tl, format = \bfseries \kaishu \zihao { -2 }, bottom-skip = 20 pt } @@ -150,12 +150,12 @@ align = l } \cs_new_protected:Npn \__nju_abs_info_u: - { \__nju_abs_info_u:nn { } { \c__nju_name_colon_tl } } + { \__nju_abs_info_u:nn { } { \l__nju_name_colon_tl } } \cs_new_protected:Npn \__nju_abs_info_en_u: - { \__nju_abs_info_u:nn { _en } { \c__nju_name_colon_en_tl } } + { \__nju_abs_info_u:nn { _en } { \l__nju_name_colon_en_tl } } \cs_new_protected:Npn \__nju_abs_info_u:nn #1#2 { - \tl_set_eq:NN \c__nju_name_author_tl \c__nju_name_authora_tl + \tl_set_eq:NN \l__nju_name_author_tl \l__nju_name_authora_tl \clist_map_inline:nn { title, dept, major, author, supvfull } { \__nju_name:nn { abslabel #1 } { ##1 #1 } #2 @@ -203,8 +203,8 @@ { abstract a } { 中文摘要 } { ABSTRACT }, { abstract b } { 摘\qquad{}要 } { ABSTRACT }, { abstracttitle } - { \c__nju_name_nju_tl 本科生毕业论文(设计、作品)中文摘要 } - { \c__nju_name_nju_tl 本科生毕业论文(设计、作品)英文摘要 }, + { \l__nju_name_nju_tl 本科生毕业论文(设计、作品)中文摘要 } + { \l__nju_name_nju_tl 本科生毕业论文(设计、作品)英文摘要 }, { appendix } { 附录 } { appendix }, { author } { 学生姓名 } { UNDERGRADUATE }, { blankdate } { \qquad{}年 \quad{}月 \quad{}日 } { }, @@ -224,7 +224,7 @@ { type } { 本科毕业论文 } { u } } { \__nju_define_name:nnn #1 } -\tl_const:Nn \c__nju_text_origdecl_tl +\tl_set:Nn \l__nju_text_origdecl_tl { 本人郑重承诺:所呈交的毕业论文(设计)(题目: \g__nju_info_title_tl ) 是在指导教师的指导下严格按照学校和院系有关规定由本人独立完成的。 @@ -261,12 +261,12 @@ { emblem color } { black }, { name color } { black }, { section } { \bigger \normalfont \sffamily }, - { chapter } { \c__nju_fmt_section_tl \centering }, - { subsection } { \c__nju_fmt_section_tl }, - { subsubsection } { \c__nju_fmt_section_tl }, - { paragraph } { \c__nju_fmt_section_tl }, - { subparagraph } { \c__nju_fmt_section_tl }, - { chapterintoc } { \c__nju_fmt_section_tl }, + { chapter } { \l__nju_fmt_section_tl \centering }, + { subsection } { \l__nju_fmt_section_tl }, + { subsubsection } { \l__nju_fmt_section_tl }, + { paragraph } { \l__nju_fmt_section_tl }, + { subparagraph } { \l__nju_fmt_section_tl }, + { chapterintoc } { \l__nju_fmt_section_tl }, { tabular } { \zihao { 5 } }, { toc title } { \centering \zihao { 3 } \bfseries }, { header } { \small \kaishu }, diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls b/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls index d860877df20..2560e613a2e 100644 --- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls +++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls @@ -6,7 +6,7 @@ %% %% njuthesis.dtx (with options: `class') %% -%% Copyright (C) 2021 - 2023 +%% Copyright (C) 2021 - 2024 %% by Nanjing University Linux User Group %% <git+nju-lug-email-3104-issue-@yaoge123.cn> %% @@ -24,7 +24,7 @@ %% `.dtx' through XeTeX. %% \NeedsTeXFormat{LaTeX2e} -\GetIdInfo $Id: njuthesis.dtx 1.3.2 2023-12-05 16:30:00 +\GetIdInfo $Id: njuthesis.dtx 1.4.0 2024-03-19 20:30:00 +0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$ {Thesis template for Nanjing University} \ProvidesExplClass{njuthesis} @@ -46,6 +46,7 @@ \@ifpackagelater { expl3 } { 2023/10/10 } { } { \cs_generate_variant:Nn \tl_set:Nn { Ne } + \cs_generate_variant:Nn \tl_gset:Nn { Ne } \cs_generate_variant:Nn \tl_const:Nn { Ne } \cs_generate_variant:Nn \tl_gput_right:Nn { Ne } } @@ -74,11 +75,14 @@ \tl_new:N \l__nju_tmpb_tl \int_new:N \g__nju_info_type_int \bool_new:N \g__nju_opt_academic_bool -\bool_new:N \g__nju_opt_twoside_bool -\bool_set_true:N \g__nju_opt_twoside_bool +\bool_new:N \g__nju_opt_draft_bool +\bool_gset_false:N \g__nju_opt_draft_bool \bool_new:N \g__nju_opt_supvii_bool \tl_new:N \g__nju_info_supvfull_tl \tl_new:N \g__nju_info_supvfull_en_tl +\tl_new:N \g__nju_info_major_tl +\tl_new:N \g__nju_info_majorc_tl +\tl_new:N \g__nju_font_set_tl \tl_new:N \g__nju_font_latin_tl \tl_new:N \g__nju_font_cjk_tl \tl_new:N \g__nju_font_math_tl @@ -108,10 +112,10 @@ \clist_const:Nn \c__nju_name_anon_en_clist { author, supervisor, supervisor-ii } \cs_new:Nn \__nju_null: { \hbox:n { } } -\cs_new:Nn \__nju_quad: { \skip_horizontal:n { 1 em } } -\cs_new:Nn \__nju_qquad: { \skip_horizontal:n { 2 em } } -\cs_new:Nn \__nju_vskip: { \skip_vertical:N \c__nju_vsep_dim } -\cs_new:Nn \__nju_hskip: { \skip_horizontal:N \c__nju_hsep_dim } +\cs_new:Nn \__nju_space: { \skip_horizontal:n { .5 em } } +\cs_new:Nn \__nju_quad: { \skip_horizontal:n { 1 em } } +\cs_new:Nn \__nju_vskip: { \skip_vertical:N \l__nju_vsep_dim } +\cs_new:Nn \__nju_hskip: { \skip_horizontal:N \l__nju_hsep_dim } \cs_set_protected:Npn \__nju_vskip:N #1 { \tex_hrule:D \@height \c_zero_dim \scan_stop: @@ -119,22 +123,30 @@ \skip_vertical:N #1 \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} } -\cs_new_protected:Npn \__nju_define_name:nnn #1#2#3 +\cs_new:Npn \__nju_define_name:nn #1 { - \tl_const:cn { c__nju_name_ #1 _tl } {#2} - \tl_const:cn { c__nju_name_ #1 _en_tl } {#3} + \tl_new:c { l__nju_name_ #1 _tl } + \tl_set:cn { l__nju_name_ #1 _tl } + } +\cs_new:Npn \__nju_define_name:nnn #1#2#3 + { + \__nju_define_name:nn { #1 } {#2} + \__nju_define_name:nn { #1 _en } {#3} + } +\cs_new:Npn \__nju_define_fmt:nn #1 { \tl_set:cn { l__nju_fmt_ #1 _tl } } +\cs_new:Npn \__nju_define_dim:nn #1 + { + \dim_new:c { l__nju_ #1 _dim } + \dim_set:cn { l__nju_ #1 _dim } + } +\cs_new:Npn \__nju_define_skip:nn #1 + { + \skip_new:c { l__nju_ #1 _skip } + \skip_set:cn { l__nju_ #1 _skip } } -\cs_new_protected:Npn \__nju_define_fmt:nn #1#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} } -\cs_new_protected:Npn \__nju_define_skip:nn #1#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:n #1 { \tl_use:c { l__nju_name_ #1 _tl } } +\cs_new:Npn \__nju_fmt:n #1 { \tl_use:c { l__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 @@ -158,7 +170,7 @@ \cs_new_protected:Npn \__nju_box_ulined:NN #1#2 { \mode_leave_vertical: - \rule [ \c__nju_ruledpi_dim ] {#1} { \c__nju_rulehti_dim } + \rule [ \l__nju_ruledpi_dim ] {#1} { \l__nju_rulehti_dim } \skip_horizontal:n { -#1 } \hbox_to_wd:nn {#1} { \tex_hfil:D #2 \tex_hfil:D } } @@ -184,9 +196,9 @@ \cs_generate_variant:Nn \__nju_box_spread:NNn { NNv } \cs_generate_variant:Nn \__nju_box_spread:NNn { NNe } \cs_new_protected:Npn \__nju_box_spread_name:Nn #1#2 - { \__nju_box_spread:NNv #1 \c_empty_tl { c__nju_name_ #2 _tl } } + { \__nju_box_spread:NNv #1 \c_empty_tl { l__nju_name_ #2 _tl } } \cs_new_protected:Npn \__nju_box_spread_name:NNn #1#2#3 - { \__nju_box_spread:NNv #1 #2 { c__nju_name_ #3 _tl } } + { \__nju_box_spread:NNv #1 #2 { l__nju_name_ #3 _tl } } \cs_new_protected:Npn \__nju_box_center:Nn #1#2 { \mode_leave_vertical: @@ -197,7 +209,7 @@ \int_set:Nn #1 { \int_max:nn { \clist_count:N #3 } {#5} } \int_step_inline:nn {#1} { - \clist_pop:NNF #3 #2 { \tl_set_eq:NN #2 \c_empty_tl } + \clist_gpop:NNF #3 #2 { \tl_set_eq:NN #2 \c_empty_tl } \__nju_box_ulined:NN #4 #2 \tex_par:D } } @@ -206,15 +218,15 @@ \cs_new_protected:Npn \__nju_uline:n #1 { \mode_leave_vertical: - \rule [ \c__nju_ruledpi_dim ] {#1} { \c__nju_rulehti_dim } + \rule [ \l__nju_ruledpi_dim ] {#1} { \l__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 [ \l__nju_ruledpii_dim ] {#1} { \l__nju_rulehtii_dim } \skip_horizontal:n { -#1 } - \rule [ \c__nju_ruledpiii_dim ] {#1} { \c__nju_rulehtii_dim } + \rule [ \l__nju_ruledpiii_dim ] {#1} { \l__nju_rulehtii_dim } \skip_horizontal:n { -#1 } } \cs_new:Npn \__nju_get_width:Nn #1#2 @@ -241,12 +253,12 @@ \cs_generate_variant:Nn \__nju_get_width_print:Nn { Ne } \cs_new_protected:Npn \__nju_uline_entry:Nn #1#2 { - \__nju_get_width_print:Nv #1 { c__nju_name_ #2 _tl } + \__nju_get_width_print:Nv #1 { l__nju_name_ #2 _tl } \__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 } + \__nju_get_width_print:Nv #1 { l__nju_name_ #2 _tl } \dim_sub:Nn #1 { \textwidth / 2 } \__nju_box_ulined_info:Nn #1 {#2} } @@ -257,7 +269,7 @@ \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_gset:cx { g__nju_info_ #2 date #1 _tl } { \tl_if_empty:nTF {#3} { \__nju_name:n { blankdate #1 } } @@ -273,7 +285,7 @@ \cs_new:Npn \__nju_breakpar_loop:n #1 { \dim_set:Nn \l__nju_tmpa_dim - { - \tex_prevdepth:D - \c__nju_ruledpi_dim - \c__nju_rulehti_dim } + { - \tex_prevdepth:D - \l__nju_ruledpi_dim - \l__nju_rulehti_dim } \hbox_gset:Nn \l__nju_tmpc_box { } \__nju_loop_until:nnn { \box_if_empty_p:N \l__nju_tmpb_box } { @@ -323,7 +335,7 @@ \mode_leave_vertical: #1 \parbox [ t ] {#3} { - \c__nju_fmt_covertitle_tl \__nju_uline_title: + \l__nju_fmt_covertitle_tl \__nju_uline_title: \dim_gset_eq:NN \l__nju_tmpa_dim \tex_prevdepth:D } \tex_par:D @@ -355,9 +367,9 @@ \__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 [ \l__nju_fmt_emblemcolor_tl ] {#1} { ! } } \cs_new_protected:Npn \__nju_name:N #1 - { \njuname [ \c__nju_fmt_namecolor_tl ] {#1} { ! } } + { \njuname [ \l__nju_fmt_namecolor_tl ] {#1} { ! } } \cs_new_protected:Npn \__nju_abs_bookmark:nn #1#2 { \phantomsection @@ -547,6 +559,10 @@ The~ font~ is~ normally~ distributed~ with~ MS~ Windows.~ I~ have~ used~ songti~ for~ substitution. } +\cs_new:Npn \__nju_pass_option:nn #1#2 { \PassOptionsToClass {#2} {#1} } +\cs_new:Npn \__nju_pass_option:n { \__nju_pass_option:nn { ctexbook } } +\cs_generate_variant:Nn \__nju_pass_option:n { V } +\cs_new:Npn \__nju_pass_option: { \__nju_pass_option:V \l_keys_key_str } \keys_define:nn { nju } { type .choices:nn = { bachelor, master, doctor, postdoc } @@ -554,45 +570,66 @@ type .initial:n = bachelor, degree .choice:, degree / academic .code:n = - { \bool_set_true:N \g__nju_opt_academic_bool }, + { \bool_gset_true:N \g__nju_opt_academic_bool }, degree / professional .code:n = - { \bool_set_false:N \g__nju_opt_academic_bool }, + { \bool_gset_false:N \g__nju_opt_academic_bool }, degree .initial:n = academic, - nl-cover .bool_set:N = \g__nju_opt_nlcover_bool, + nl-cover .bool_gset:N = \g__nju_opt_nlcover_bool, nl-cover .initial:n = false, - decl-page .bool_set:N = \g__nju_opt_decl_bool, + decl-page .bool_gset:N = \g__nju_opt_decl_bool, decl-page .initial:n = false, - draft .bool_gset:N = \g__nju_opt_draft_bool, - draft .initial:n = false, + draft .value_forbidden:n = true, + draft .code:n = + { + \bool_gset_true:N \g__nju_opt_draft_bool + \__nju_pass_option: + }, oneside .value_forbidden:n = true, twoside .value_forbidden:n = true, - oneside .bool_gset_inverse:N = \g__nju_opt_twoside_bool, - anonymous .bool_set:N = \g__nju_opt_anon_bool, + oneside .code:n = + { + \bool_gset_false:N \g__nju_opt_twoside_bool + \tl_gset:Nn \g__nju_name_pagemode_tl { oneside } + \__nju_pass_option: + }, + twoside .code:n = + { + \bool_gset_true:N \g__nju_opt_twoside_bool + \tl_gset:Nn \g__nju_name_pagemode_tl { twoside } + \__nju_pass_option: + }, + anonymous .bool_gset:N = \g__nju_opt_anon_bool, anonymous .initial:n = false, latin-font .choices:nn = - { gyre, mac, win, none } - { \tl_set_eq:NN \g__nju_font_latin_tl \l_keys_choice_tl }, + { fandol, gyre, mac, macoffice, win, none } + { \tl_gset:Nn \g__nju_font_latin_tl {#1} }, cjk-font .choices:nn = - { fandol, founder, mac, noto, source, win, none } - { \tl_set_eq:NN \g__nju_font_cjk_tl \l_keys_choice_tl }, + { fandol, founder, mac, macoffice, noto, source, win, none } + { \tl_gset:Nn \g__nju_font_cjk_tl {#1} }, + fontset .choices:nn = + { fandol, mac, macoffice, win, none } + { \keys_set:nn { nju } { latin-font = #1, cjk-font = #1 } }, math-font .choices:nn = { asana, cambria, fira, garamond, lm, libertinus, newcm, stix, bonum, dejavu, pagella, schola, termes, xits, none } - { \tl_set_eq:NN \g__nju_font_math_tl \l_keys_choice_tl }, + { \tl_gset_eq:NN \g__nju_font_math_tl \l_keys_choice_tl }, math-font .initial:n = xits, font-path .code:n = { - \bool_set_true:N \g__nju_font_path_bool - \tl_set_eq:NN \g__nju_font_path_tl \l_keys_value_tl + \bool_gset_true:N \g__nju_font_path_bool + \tl_gset_eq:NN \g__nju_font_path_tl \l_keys_value_tl }, - zihao .tl_set:N = \g__nju_opt_zihao_tl, + zihao .code:n = + { \__nju_pass_option:n { zihao = #1 } }, zihao .initial:n = -4, - linespread .tl_set:N = \g__nju_opt_linespread_tl, + linespread .code:n = + { \__nju_pass_option:n { linespread = #1 } }, linespread .initial:n = 1.625, - config .clist_set:N = \g__nju_config_clist + config .clist_gset:N = \g__nju_config_clist } +\keys_set:nn { nju } { twoside } \clist_new:N \g__nju_name_optional_pkg_clist \cs_new_protected:Npn \__nju_define_pkg_keys:nnn #1#2#3 { @@ -606,7 +643,7 @@ \bool_if:cT { g__nju_opt_load_ #2 _bool } { \RequirePackage {#1} } } - \clist_put_right:Nn \g__nju_name_optional_pkg_clist {#1} + \clist_gput_right:Nn \g__nju_name_optional_pkg_clist {#1} } \clist_map_inline:nn { @@ -629,11 +666,8 @@ } } \ProcessKeysOptions { nju } -\bool_if:NTF \g__nju_opt_twoside_bool - { \tl_const:Nn \c__nju_name_pagemode_tl { twoside } } - { \tl_const:Nn \c__nju_name_pagemode_tl { oneside } } \bool_if:NT \g__nju_opt_anon_bool - { \bool_set_false:N \g__nju_opt_decl_bool } + { \bool_gset_false:N \g__nju_opt_decl_bool } \clist_map_inline:nn { abstract, bib, image, footer, footnote, header, @@ -659,12 +693,12 @@ } \@onlypreamble \njusetup \NewDocumentCommand \njusetformat { m m } - { \tl_gset:cn { c__nju_fmt_ #1 _tl } {#2} } + { \__nju_define_fmt:nn {#1} {#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} } + { \skip_gset:cn { l__nju_ #2 _skip } {#3} } + { \dim_gset:cn { l__nju_ #2 _dim } {#3} } } \NewDocumentCommand \njusetname { s m O{} m } { \__nju_set_tokenlist:nnnnn {#1} {#2} {#3} {#4} { name } } @@ -673,28 +707,23 @@ \cs_new_protected:Npn \__nju_set_tokenlist:nnnnn #1#2#3#4#5 { \bool_if:nTF {#1} - { \tl_set_eq:NN \l__nju_tmpb_tl \c__nju_name_suffix_en_tl } + { \tl_set_eq:NN \l__nju_tmpb_tl \l__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} + \tl_gset:cn { l__nju_ #5 _ #2 #3 \l__nju_tmpb_tl _tl } {#4} } -\exp_args:Ne \PassOptionsToClass +\__nju_pass_option:n { a4paper, UTF8, scheme = chinese, - \c__nju_name_pagemode_tl, - \bool_if:NT \g__nju_opt_draft_bool { draft, } - linespread = \g__nju_opt_linespread_tl, - fontset = none, - zihao = \g__nju_opt_zihao_tl + fontset = none } - { ctexbook } \clist_map_inline:nn { - { quiet } { xeCJK }, { no-math } { fontspec }, { perpage } { footmisc }, - { capitalise, nameinlink, noabbrev } { cleveref } + { capitalise, nameinlink, noabbrev } { cleveref }, + { amsmath, thmmarks, noconfig } { ntheorem } } { \PassOptionsToPackage #1 } \LoadClass { ctexbook } [ 2018/04/01 ] @@ -719,14 +748,10 @@ booktabs, caption, graphicx, - hyperref } +\__nju_loadpkg_nthm: +\RequirePackage { hyperref } \__nju_loadpkg_cref: -\bool_if:NT \g__nju_opt_load_nthm_bool - { - \PassOptionsToPackage { amsmath, thmmarks, noconfig } { ntheorem } - \RequirePackage { ntheorem } - } \bool_if:NT \g__nju_opt_twoside_bool { \RequirePackage { emptypage } } \sys_if_engine_xetex:T { @@ -778,46 +803,51 @@ } \keys_define:nn { nju / info } { - title .tl_set:N = \g__nju_info_title_tl , + title .tl_gset:N = \g__nju_info_title_tl , title .initial:n = { 空 } , - title* .tl_set:N = \g__nju_info_title_en_tl , + title* .tl_gset:N = \g__nju_info_title_en_tl , title* .initial:n = { Empty } , - keywords .clist_set:N = \g__nju_info_keywords_clist , - keywords* .clist_set:N = \g__nju_info_keywords_en_clist , - grade .tl_set:N = \g__nju_info_grade_tl , - student-id .tl_set:N = \g__nju_info_id_tl , - author .tl_set:N = \g__nju_info_author_tl , - 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_en_tl , - field .tl_set:N = \g__nju_info_field_tl , - field* .tl_set:N = \g__nju_info_field_en_tl , + keywords .clist_gset:N = \g__nju_info_keywords_clist , + keywords* .clist_gset:N = \g__nju_info_keywords_en_clist , + grade .tl_gset:N = \g__nju_info_grade_tl , + student-id .tl_gset:N = \g__nju_info_id_tl , + author .tl_gset:N = \g__nju_info_author_tl , + author* .tl_gset:N = \g__nju_info_author_en_tl , + department .tl_gset:N = \g__nju_info_dept_tl , + department* .tl_gset:N = \g__nju_info_dept_en_tl , + major* .tl_gset:N = \g__nju_info_major_en_tl , + field .tl_gset:N = \g__nju_info_field_tl , + field* .tl_gset:N = \g__nju_info_field_en_tl , major .code:n = { \bool_if:NTF \g__nju_opt_academic_bool - { \clist_pop:NN \l_keys_value_tl \g__nju_info_major_tl } { - \clist_pop:NN \l_keys_value_tl \g__nju_info_majorc_tl - \clist_pop:NNF \l_keys_value_tl \g__nju_info_major_tl - { \tl_set_eq:NN \g__nju_info_major_tl \g__nju_info_majorc_tl } + \clist_pop:NN \l_keys_value_tl \l__nju_tmpa_tl + \tl_gset_eq:NN \g__nju_info_major_tl \l__nju_tmpa_tl + } + { + \clist_pop:NN \l_keys_value_tl \l__nju_tmpa_tl + \tl_gset_eq:NN \g__nju_info_majorc_tl \l__nju_tmpa_tl + \clist_pop:NNTF \l_keys_value_tl \l__nju_tmpa_tl + { \tl_gset_eq:NN \g__nju_info_major_tl \l__nju_tmpa_tl } + { \tl_gset_eq:NN \g__nju_info_major_tl \g__nju_info_majorc_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 , - 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 , - udc .tl_set:N = \g__nju_info_udc_tl , - secret-level .tl_set:N = \g__nju_info_secretlv_tl , - supervisor-contact .tl_set:N = \g__nju_info_supvcont_tl , - email .tl_set:N = \g__nju_info_email_tl , - school-code .tl_set:N = \g__nju_info_code_tl , + supervisor .clist_gset:N = \g__nju_info_supv_clist , + supervisor* .tl_gset:N = \g__nju_info_supv_en_tl , + supervisor-ii .clist_gset:N = \g__nju_info_supvii_clist , + supervisor-ii* .tl_gset:N = \g__nju_info_supvii_en_tl , + chairman .tl_gset:N = \g__nju_info_chairman_tl , + reviewer .clist_gset:N = \g__nju_info_reviewer_clist , + clc .tl_gset:N = \g__nju_info_clc_tl , + udc .tl_gset:N = \g__nju_info_udc_tl , + secret-level .tl_gset:N = \g__nju_info_secretlv_tl , + supervisor-contact .tl_gset:N = \g__nju_info_supvcont_tl , + email .tl_gset:N = \g__nju_info_email_tl , + school-code .tl_gset: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_gset:N = \g__nju_info_degree_tl , + degree* .tl_gset:N = \g__nju_info_degree_en_tl , } \clist_map_inline:nn { submit, defend, confer, bottom } { @@ -833,15 +863,15 @@ { \keys_define:nn { nju / info } { #1 * .groups:n = { anonymous } } } \__nju_at_begin_document:n { - \tl_set:Ne \g__nju_info_supvfull_tl - { \clist_use:Nn \g__nju_info_supv_clist { \__nju_hskip: } } + \tl_gset:Ne \g__nju_info_supvfull_tl + { \clist_use:Nn \g__nju_info_supv_clist { \__nju_quad: } } \clist_if_empty:NF \g__nju_info_supvii_clist { \bool_gset_true:N \g__nju_opt_supvii_bool \tl_gput_right:Ne \g__nju_info_supvfull_tl - { \__nju_quad: \clist_use:Nn \g__nju_info_supvii_clist { \__nju_hskip: } } + { \__nju_quad: \clist_use:Nn \g__nju_info_supvii_clist { \__nju_quad: } } } - \tl_set_eq:NN \g__nju_info_supvfull_en_tl \g__nju_info_supv_en_tl + \tl_gset_eq:NN \g__nju_info_supvfull_en_tl \g__nju_info_supv_en_tl \tl_if_empty:NF \g__nju_info_supvii_en_tl { \tl_gput_right:Ne \g__nju_info_supvfull_en_tl @@ -850,15 +880,27 @@ } \bool_if:NT \g__nju_opt_anon_bool { - \tl_gclear:N \c__nju_name_nju_tl - \tl_gclear:N \c__nju_name_nju_en_tl + \tl_clear:N \l__nju_name_nju_tl + \tl_clear:N \l__nju_name_nju_en_tl + } +\tl_const:Nn \c__nju_path_macoffice_tl + { /Applications/Microsoft~ Word.app/Contents/Resources/DFonts/ } +\sys_if_platform_windows:TF + { \tl_gset:Nn \g__nju_font_set_tl { win } } + { + \ctex_if_platform_macos:TF + { + \file_if_exist:nTF { \c__nju_path_macoffice_tl times.ttf } + { \tl_gset:Nn \g__nju_font_set_tl { macoffice } } + { \tl_gset:Nn \g__nju_font_set_tl { mac } } + } + { \tl_gset:Nn \g__nju_font_set_tl { fandol } } } -\ctex_detect_platform: \tl_if_empty:NT \g__nju_font_latin_tl - { \tl_gset_eq:NN \g__nju_font_latin_tl \g__ctex_fontset_tl } + { \tl_gset_eq:NN \g__nju_font_latin_tl \g__nju_font_set_tl } \tl_if_empty:NT \g__nju_font_cjk_tl - { \tl_gset_eq:NN \g__nju_font_cjk_tl \g__ctex_fontset_tl } -\cs_new_protected:Npn \__nju_loadfont_latin:n #1 + { \tl_gset_eq:NN \g__nju_font_cjk_tl \g__nju_font_set_tl } +\cs_new:Npn \__nju_loadfont_latin:n #1 { \__fontspec_main_setmainfont:nn { } { Times~New~Roman } \__fontspec_main_setsansfont:nn { } { Arial } @@ -876,6 +918,24 @@ { \c__nju_name_gyrefeature_clist } { texgyretermes } } } +\cs_new_protected:Npn \__nju_loadfont_latin_macoffice: + { + \__fontspec_main_setmainfont:nn + { \l__nju_name_macofficefeature_clist } { times } + \__fontspec_main_setsansfont:nn + { \l__nju_name_macofficefeature_clist } { arial } + \__fontspec_main_setmonofont:nn + { Scale = MatchLowercase } { Menlo } + } +\clist_const:Nn \c__nju_name_macofficefeature_clist + { + Path = \c__nju_path_macoffice_tl, + Extension = .ttf, + UprightFont = *, + BoldFont = *bd, + ItalicFont = *i, + BoldItalicFont = *bi + } \cs_new_protected:Npn \__nju_loadfont_latin_gyre: { \__fontspec_main_setmainfont:nn @@ -890,6 +950,7 @@ } { texgyrecursor } } +\cs_new_eq:NN \__nju_loadfont_latin_fandol: \__nju_loadfont_latin_gyre: \clist_const:Nn \c__nju_name_gyrefeature_clist { Extension = .otf, @@ -909,6 +970,7 @@ \setCJKfamilyfont { zhhei } { SimHei } [#1] \setCJKfamilyfont { zhfs } { FangSong } [#1] \setCJKfamilyfont { zhkai } { KaiTi } [#1] + \__nju_stzhongs:n {#1} } \cs_new:Npn \__nju_loadfont_cjk_win: { \__nju_loadfont_cjk_win:N \c__nju_name_fakebold_tl } @@ -928,6 +990,22 @@ \setCJKfamilyfont { zhfs } { STFangsong } \setCJKfamilyfont { zhkai } { Kaiti~SC } [ BoldFont = Kaiti~SC~Bold ] } +\cs_new:Npn \__nju_loadfont_cjk_macoffice:n #1 + { + \setCJKmainfont { Simsun.ttc } [ ItalicFont = Kaiti.ttf, #1 ] + \setCJKsansfont { SimHei.ttf } [#1] + \setCJKmonofont { Fangsong.ttf } [#1] + \setCJKfamilyfont { zhsong } { Simsun.ttc } [#1] + \setCJKfamilyfont { zhhei } { SimHei.ttf } [#1] + \setCJKfamilyfont { zhfs } { Fangsong.ttf } [#1] + \setCJKfamilyfont { zhkai } { Kaiti.ttf } [#1] + \__nju_stzhongs:nn { STZHONGS.ttf } {#1} + } +\cs_new:Npn \__nju_loadfont_cjk_macoffice: + { + \__nju_loadfont_cjk_macoffice:n + { Path = \c__nju_path_macoffice_tl, \c__nju_name_fakebold_tl } + } \cs_new_protected:Npn \__nju_loadfont_cjk_fandol: { \__nju_hide_no_script_msg: @@ -1015,22 +1093,25 @@ ItalicFeatures = FakeSlant, BoldItalicFeatures = FakeSlant } -\cs_new:Npn \__nju_loadfont_stzhongs: +\cs_new:Npn \__nju_stzhongs:nn #1#2 + { \newCJKfontfamily \__nju_stzhongs: {#1} [#2] } +\cs_new:Npn \__nju_stzhongs:n { \__nju_stzhongs:nn { 华文中宋 } } +\cs_new_protected:Npn \__nju_loadfont_stzhongs: { - \fontspec_font_if_exist:nTF { 华文中宋 } + \cs_if_exist_use:NF \__nju_stzhongs: { - \newCJKfontfamily \__nju_stzhongs: { 华文中宋 } - [ \c__nju_name_fakebold_tl ] - } - { - \bool_if:NTF \g__nju_font_path_bool - { - \newCJKfontfamily \__nju_stzhongs: { \c__nju_name_stzhongsfile_tl } - [ Path = \g__nju_font_path_tl, \c__nju_name_fakebold_tl ] - } + \fontspec_font_if_exist:nTF { 华文中宋 } + { \__nju_stzhongs:n { \c__nju_name_fakebold_tl } } { - \cs_set_eq:NN \__nju_stzhongs: \rmfamily - \msg_warning:nn { njuthesis } { missing-stzhongs } + \bool_if:NTF \g__nju_font_path_bool + { + \__nju_stzhongs:nn { \l__nju_name_stzhongsfile_tl } + { Path = \g__nju_font_path_tl, \c__nju_name_fakebold_tl } + } + { + \cs_set_eq:NN \__nju_stzhongs: \rmfamily + \msg_warning:nn { njuthesis } { missing-stzhongs } + } } } } @@ -1131,9 +1212,6 @@ { NewCMMono10 } } \__nju_cs_clear:N \__nju_loadfont_math_none: -\cs_new_eq:NN \__nju_loadfont_latin_windows: \__nju_loadfont_latin_win: -\cs_new_eq:NN \__nju_loadfont_latin_fandol: \__nju_loadfont_latin_gyre: -\cs_new_eq:NN \__nju_loadfont_cjk_windows: \__nju_loadfont_cjk_win: \cs_new_protected:Npn \__nju_loadfont: { \use:c { __nju_loadfont_latin_ \g__nju_font_latin_tl : } @@ -1172,15 +1250,15 @@ \clist_new:N \g__nju_footer_clist \ctex_at_end_preamble:n { - \clist_set_eq:Nc \g__nju_header_clist - { g__nju_header_ \c__nju_name_pagemode_tl _clist } - \clist_set_eq:Nc \g__nju_footer_clist - { g__nju_footer_ \c__nju_name_pagemode_tl _clist } + \clist_gset_eq:Nc \g__nju_header_clist + { g__nju_header_ \g__nju_name_pagemode_tl _clist } + \clist_gset_eq:Nc \g__nju_footer_clist + { g__nju_footer_ \g__nju_name_pagemode_tl _clist } } \cs_new_protected:Npn \__nju_header:nn #1#2 - { \fancyhead [#1] { \c__nju_fmt_header_tl \nouppercase {#2} } } + { \fancyhead [#1] { \l__nju_fmt_header_tl \nouppercase {#2} } } \cs_new_protected:Npn \__nju_footer:nn #1#2 - { \fancyfoot [#1] { \c__nju_fmt_footer_tl \nouppercase {#2} } } + { \fancyfoot [#1] { \l__nju_fmt_footer_tl \nouppercase {#2} } } \fancypagestyle { plain } { \fancyhf { } @@ -1207,30 +1285,29 @@ \RenewDocumentCommand \frontmatter { } { \cleardoublepage - \exp_args:NV \pagestyle \c__nju_fmt_pagestyle_tl + \exp_args:NV \pagestyle \l__nju_fmt_pagestyle_tl \pagenumbering { Roman } } \RenewDocumentCommand \mainmatter { } { \cleardoublepage - \exp_args:NV \pagestyle \c__nju_fmt_pagestyle_tl + \exp_args:NV \pagestyle \l__nju_fmt_pagestyle_tl \pagenumbering { arabic } \normalfont \normalsize } \AtBeginEnvironment { document } { - \exp_args:NV \pagestyle \c__nju_fmt_pagestyle_tl + \exp_args:NV \pagestyle \l__nju_fmt_pagestyle_tl \pagenumbering { Roman } } \cs_new:Npn \__nju_bookmark_toc:n #1 - { \addcontentsline { toc } { chapter } { \c__nju_fmt_chapterintoc_tl #1 } } + { \addcontentsline { toc } { chapter } { \l__nju_fmt_chapterintoc_tl #1 } } \cs_generate_variant:Nn \__nju_bookmark_toc:n { V } \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} } -\cs_new:Npn \__nju_bookmark_pdf:nn #1#2 - { \phantomsection \__nju_bookmark_pdf_nosec:nn {#1} {#2} } +\cs_new:Npn \__nju_bookmark_pdf_nosec:nn { \pdfbookmark [0] } +\cs_new:Npn \__nju_bookmark_pdf:nn + { \phantomsection \__nju_bookmark_pdf_nosec:nn } \cs_new:Npn \__nju_bookmark:Nnn #1#2#3 { \bool_if:NTF #1 @@ -1256,24 +1333,24 @@ \NewDocumentCommand \njuchapter { m } { \__nju_chapter:n {#1} } \keys_set:nn { ctex } { - chapter / beforeskip = \c__nju_chapterbefore_dim, - chapter / afterskip = \c__nju_chapterafter_dim, - chapter / format = \c__nju_fmt_chapter_tl, - section / format = \c__nju_fmt_section_tl, - subsection / format = \c__nju_fmt_subsection_tl, - subsubsection / format = \c__nju_fmt_subsubsection_tl, - paragraph / format = \c__nju_fmt_paragraph_tl, - subparagraph / format = \c__nju_fmt_subparagraph_tl, - contentsname = \c__nju_name_tableofcontents_tl, - listfigurename = \c__nju_name_listoffigures_tl, - listtablename = \c__nju_name_listoftables_tl, - chapter / tocline = \c__nju_fmt_chapterintoc_tl \CTEXnumberline {#1} #2 + chapter / beforeskip = \l__nju_chapterbefore_dim, + chapter / afterskip = \l__nju_chapterafter_dim, + chapter / format = \l__nju_fmt_chapter_tl, + section / format = \l__nju_fmt_section_tl, + subsection / format = \l__nju_fmt_subsection_tl, + subsubsection / format = \l__nju_fmt_subsubsection_tl, + paragraph / format = \l__nju_fmt_paragraph_tl, + subparagraph / format = \l__nju_fmt_subparagraph_tl, + contentsname = \l__nju_name_tableofcontents_tl, + listfigurename = \l__nju_name_listoffigures_tl, + listtablename = \l__nju_name_listoftables_tl, + chapter / tocline = \l__nju_fmt_chapterintoc_tl \CTEXnumberline {#1} #2 } \cs_new_protected:Npn \__nju_make_toc:nn #1#2 { \group_begin: \keys_set:nn { ctex } - { chapter/format = \c__nju_fmt_toctitle_tl } + { chapter/format = \l__nju_fmt_toctitle_tl } \__nju_chapter:cnn { g__nju_ #2 _showentry_bool } {#1} {#2} \group_end: \@starttoc {#2} @@ -1283,7 +1360,7 @@ { \keys_define:nn { nju / #1 } { - toc-entry .bool_set:c = { g__nju_ #3 _showentry_bool }, + toc-entry .bool_gset:c = { g__nju_ #3 _showentry_bool }, toc-entry .initial:n = true } \exp_args:Nc \RenewDocumentCommand {#1} { } @@ -1300,8 +1377,8 @@ { \bool_if:NF \g__nju_toc_showentry_bool { - \bool_set_false:N \g__nju_lof_showentry_bool - \bool_set_false:N \g__nju_lot_showentry_bool + \bool_gset_false:N \g__nju_lof_showentry_bool + \bool_gset_false:N \g__nju_lot_showentry_bool } } \keys_define:nn { nju / tableofcontents } @@ -1336,10 +1413,7 @@ { \clist_gput_right:Nn \g__nju_blx_option_clist { style = #1 } }, style .initial:n = numeric, option .code:n = - { - \clist_gput_right:NV \g__nju_blx_option_clist - \l_keys_value_tl - }, + { \clist_gput_right:NV \g__nju_blx_option_clist \l_keys_value_tl }, resource .code:n = { \clist_gput_right:NV \g__nju_blx_resource_clist \l_keys_value_tl }, } @@ -1356,12 +1430,11 @@ } \cs_new_protected:Npn \__nju_blx_post_setup: { - \defbibheading { njubibintoc } [ \bibname ] { \__nju_chapter:n { ##1 } } + \defbibheading { njubibintoc } [ \bibname ] { \__nju_chapter:n {##1} } \tl_if_eq:NnTF \blx@refsecreset@level { 2 } { \DeclarePrintbibliographyDefaults { heading = subbibintoc } } { \DeclarePrintbibliographyDefaults { heading = njubibintoc } } - \clist_map_inline:Nn \g__nju_blx_resource_clist - { \addbibresource { ##1 } } + \clist_map_inline:Nn \g__nju_blx_resource_clist { \addbibresource {##1} } } \bool_if:NT \g__nju_opt_load_blx_bool { @@ -1372,24 +1445,28 @@ \__nju_blx_post_setup: } } +\hypersetup + { + bookmarksnumbered = true, + psdextra = true, + unicode = true, + hidelinks + } +\pdfstringdefDisableCommands + { + \clist_map_inline:nn + { \\, \quad, \qquad, \bigger } + { \__nju_cs_clear:N #1 } + \cs_set_eq:NN \zihao \use_none:n + } \ctex_at_end_preamble:n { - \pdfstringdefDisableCommands - { - \clist_map_inline:nn - { \\, \quad, \qquad, \bigger } - { \__nju_cs_clear:N #1 } - } \hypersetup { - bookmarksnumbered = true, - psdextra = true, - unicode = true, - hidelinks, pdftitle = \g__nju_info_title_tl, pdfauthor = \g__nju_info_author_tl, pdfkeywords = \g__nju_info_keywords_clist, - pdfcreator = \c__nju_name_pdfcreator_tl + pdfcreator = \l__nju_name_pdfcreator_tl } } \cs_new:Npn \__nju_cref_name:n #1 @@ -1402,10 +1479,10 @@ \crefformat { section } { 第~#2#1#3~节 } \crefformat { subsection } { 第~#2#1#3~小节 } \crefformat { subsubsection } { 第~#2#1#3~小节 } - \clist_map_inline:nn { figure, table, appendix, proof } + \clist_map_inline:nn { figure, table, appendix } { \__nju_cref_name:n {#1} } } -\clist_set:Nn \g__nju_fn_ctext_option_clist { charf = \scriptsize } +\clist_gset:Nn \g__nju_fn_ctext_option_clist { charf = \scriptsize } \keys_define:nn { nju / footnote } { style .choices:nn = { plain, pifont, circled, circled* } @@ -1440,7 +1517,7 @@ \cs_set:Npn \__nju_fn_hang: { \int_set:Nn \tex_hangafter:D { 1 } - \dim_set_eq:NN \tex_hangindent:D \c__nju_fnhang_dim + \dim_set_eq:NN \tex_hangindent:D \l__nju_fnhang_dim } }, hang / false .code:n = { \__nju_cs_clear:N \__nju_fn_hang: }, @@ -1463,7 +1540,7 @@ \cs_set:Npn \@makefntext #1 { \mode_leave_vertical: - \hbox_to_wd:nn { \c__nju_fnhang_dim } { \@thefnmark \tex_hfil:D } + \hbox_to_wd:nn { \l__nju_fnhang_dim } { \@thefnmark \tex_hfil:D } \tex_penalty:D \@M \__nju_fn_hang: #1 @@ -1471,17 +1548,19 @@ } \keys_define:nn { nju / image } { path .code:n = { \graphicspath {#1} } } \DeclareGraphicsExtensions { .pdf, .eps, .jpg, .png } -\BeforeBeginEnvironment { tabular } { \centering \c__nju_fmt_tabular_tl } +\BeforeBeginEnvironment { tabular } { \centering \l__nju_fmt_tabular_tl } \ctex_at_end_package:nn { tabularray } { \__tblr_use_lib_booktabs: \tl_set:Nn \l__nju_tmpb_tl - { , abovesep = 4 pt, stretch = 0.8, cells = { font = \c__nju_fmt_tabular_tl } } + { , abovesep = 4 pt, stretch = 0.8, cells = { font = \l__nju_fmt_tabular_tl } } \tl_put_right:NV \l__tblr_default_tblr_inner_tl \l__nju_tmpb_tl \tl_put_right:NV \l__tblr_default_talltblr_inner_tl \l__nju_tmpb_tl - \tl_put_right:Nn \l__tblr_default_talltblr_outer_tl { , headsep = -4 pt } + \tl_put_right:NV \l__tblr_default_longtblr_inner_tl \l__nju_tmpb_tl + \tl_put_right:Nn \l__tblr_default_talltblr_outer_tl { , headsep = 12.63 pt } + \tl_put_right:Nn \l__tblr_default_longtblr_outer_tl { , headsep = 12.63 pt } \DefTblrTemplate { caption-tag } { default } - { \c__nju_name_table_tl \hspace { 0.25em } \thetable } + { \l__nju_name_table_tl \hspace { 0.25em } \thetable } \DefTblrTemplate { caption-sep } { default } { \quad } \DefTblrTemplate { firsthead } { caption } { @@ -1491,11 +1570,11 @@ \SetTblrTemplate { firsthead } { caption } \SetTblrStyle { caption } { font = \normalfont \bfseries \small } \SetTblrStyle { note } { font = \normalfont \footnotesize } + \SetTblrStyle { remark } { font = \normalfont \footnotesize } } \DeclareCaptionStyle{njucap} { - font = small, - font += bf, + font = {small, bf}, labelsep = quad, justification = centering } @@ -1506,7 +1585,7 @@ { \keys_define:nn { nju / label-sep } { - #1 .tl_set:c = { g__nju_sep_ #1 _tl }, + #1 .tl_gset:c = { g__nju_sep_ #1 _tl }, #1 .initial:n = { - } } \__nju_at_begin_document:n @@ -1598,8 +1677,8 @@ \bool_new:N \g__nju_opt_math_leq_bool \bool_new:N \g__nju_opt_math_vec_bool \bool_if:NTF \g__nju_opt_load_um_bool - { \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 } + { \tl_set_eq:NN \l__nju_name_integral_tl \l__um_nolimits_tl } + { \tl_set_eq:NN \l__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_eq:NN \__nju_um_setup:n \use_none:n } @@ -1607,19 +1686,19 @@ { integral .choice:, integral / upright .code:n = - { \bool_set_true:N \g__nju_opt_math_int_bool }, + { \bool_gset_true:N \g__nju_opt_math_int_bool }, integral / slanted .code:n = - { \bool_set_false:N \g__nju_opt_math_int_bool }, + { \bool_gset_false:N \g__nju_opt_math_int_bool }, integral-limits .choice:, integral-limits / true .code:n = { \tl_clear:N \l__um_nolimits_tl }, integral-limits / false .code:n = - { \tl_set_eq:NN \l__um_nolimits_tl \c__nju_name_integral_tl }, + { \tl_set_eq:NN \l__um_nolimits_tl \l__nju_name_integral_tl }, less-than-or-equal .choice:, less-than-or-equal / slanted .code:n = - { \bool_set_true:N \g__nju_opt_math_leq_bool }, + { \bool_gset_true:N \g__nju_opt_math_leq_bool }, less-than-or-equal / horizontal .code:n = - { \bool_set_false:N \g__nju_opt_math_leq_bool }, + { \bool_gset_false:N \g__nju_opt_math_leq_bool }, math-ellipsis .choice:, math-ellipsis / centered .code:n = { @@ -1640,9 +1719,9 @@ { \bool_set_false:N \g__nju_opt_math_re_bool }, vector .choice:, vector / boldfont .code:n = - { \bool_set_true:N \g__nju_opt_math_vec_bool }, + { \bool_gset_true:N \g__nju_opt_math_vec_bool }, vector / arrow .code:n = - { \bool_set_false:N \g__nju_opt_math_vec_bool }, + { \bool_gset_false:N \g__nju_opt_math_vec_bool }, uppercase-greek .choice:, uppercase-greek / upright .code:n = { \__nju_um_setup:n { math-style = ISO } }, @@ -1751,60 +1830,58 @@ \pagenumbering { gobble } \__nju_make_cover: } - \bool_if:NF \g__nju_opt_draft_bool - { - \bool_if:NT \g__nju_opt_decl_bool - { - \__nju_make_decl_i: - \__nju_make_decl_ii: - } - } + \tl_gremove_all:Nn \g__nju_info_title_tl { \\ } + \tl_gremove_all:Nn \g__nju_info_title_en_tl { \\ } + \bool_lazy_and:nnT + { ! \g__nju_opt_draft_bool } + { \g__nju_opt_decl_bool } + { \__nju_make_decl_i: \__nju_make_decl_ii: } \cleardoublepage - \exp_args:NV \pagestyle \c__nju_fmt_pagestyle_tl + \exp_args:NV \pagestyle \l__nju_fmt_pagestyle_tl \pagenumbering { Roman } } -\cs_new_protected:Npn \__nju_print_keywords:nn #1#2 +\cs_new_protected:Npn \__nju_print_keywords:nn + { \__nju_print_keywords:NNnn \l__nju_tmpa_tl \l__nju_tmpa_dim } +\cs_new:Npn \__nju_print_keywords:NNnn #1#2#3#4 { - \tl_set:Nv \l__nju_tmpa_tl { c__nju_name_keywords #1 _tl } - \exp_args:NNv \tl_put_left:Nn - \l__nju_tmpa_tl { c__nju_fmt_abslabel #1 _tl } - \exp_args:NNv \tl_put_right:Nn - \l__nju_tmpa_tl { c__nju_name_colon #1 _tl } - \__nju_get_width:NV \l__nju_tmpa_dim \l__nju_tmpa_tl - \list { \l__nju_tmpa_tl } + \tl_set:Nv #1 { l__nju_name_keywords #3 _tl } + \exp_args:NNv \tl_put_left:Nn #1 { l__nju_fmt_abslabel #3 _tl } + \exp_args:NNv \tl_put_right:Nn #1 { l__nju_name_colon #3 _tl } + \__nju_get_width:NV #2 #1 + \list {#1} { - \labelwidth \l__nju_tmpa_dim + \labelwidth #2 \labelsep \c_zero_dim \leftmargin \c_zero_dim \rightmargin \c_zero_dim - \advance \leftmargin \l__nju_tmpa_dim + \advance \leftmargin #2 \__nju_cs_clear:N \makelabel } - \item \clist_use:cn { g__nju_info_keywords #1 _clist } {#2} + \item \clist_use:cn { g__nju_info_keywords #3 _clist } {#4} \endlist } \skip_new:N \g__nju_abs_title_left_skip \keys_define:nn { nju / abstract } { - toc-entry .bool_set:N = \g__nju_abs_showentry_bool, + toc-entry .bool_gset:N = \g__nju_abs_showentry_bool, toc-entry .initial:n = true, - underline .bool_set:N = \g__nju_abs_underline_bool, + underline .bool_gset:N = \g__nju_abs_underline_bool, underline .initial:n = true, title-style .choice:, title-style / strict .code:n = { - \bool_set_true:N \g__nju_abs_title_strict_bool - \skip_set:Nn \g__nju_abs_title_left_skip { .5 em } + \bool_gset_true:N \g__nju_abs_title_strict_bool + \skip_gset:Nn \g__nju_abs_title_left_skip { .5 em } }, title-style / centered .code:n = { - \bool_set_true:N \g__nju_abs_title_strict_bool - \skip_set:Nn \g__nju_abs_title_left_skip { .5 em plus 1 fill } + \bool_gset_true:N \g__nju_abs_title_strict_bool + \skip_gset:Nn \g__nju_abs_title_left_skip { .5 em plus 1 fill } }, title-style / natural .code:n = { - \bool_set_false:N \g__nju_abs_title_strict_bool - \skip_set:Nn \g__nju_abs_title_left_skip { .5 em plus 1 fill } + \bool_gset_false:N \g__nju_abs_title_strict_bool + \skip_gset:Nn \g__nju_abs_title_left_skip { .5 em plus 1 fill } }, title-style .initial:n = strict } @@ -1812,7 +1889,7 @@ { \cleardoublepage \thispagestyle { plain } - \__nju_abs_bookmark:Vn \c__nju_name_abstracta_tl { abstract } + \__nju_abs_bookmark:Vn \l__nju_name_abstracta_tl { abstract } \tl_gremove_all:Nn \g__nju_info_title_tl { \\ } \__nju_make_abstract: \group_begin: \kaishu \zihao { -4 } #1 @@ -1822,34 +1899,34 @@ { \cleardoublepage \thispagestyle { plain } - \__nju_abs_bookmark:Vn \c__nju_name_abstracta_en_tl { abstract-en } + \__nju_abs_bookmark:Vn \l__nju_name_abstracta_en_tl { abstract-en } \tl_gremove_all:Nn \g__nju_info_title_en_tl { \\ } \__nju_make_abstract_en: \group_begin: \zihao { -4 } #1 } { \__nju_print_keywords:nn { _en } { ;~ } \group_end: } \NewDocumentEnvironment { preface } { +b } - { \__nju_chapter:V \c__nju_name_preface_tl #1 } + { \__nju_chapter:V \l__nju_name_preface_tl #1 } { \cleardoublepage } \NewDocumentEnvironment { acknowledgement } { +b } { \bool_if:NTF \g__nju_opt_anon_bool - { \__nju_bookmark_toc:V \c__nju_name_acknowledgementa_tl } - { \__nju_chapter:V \c__nju_name_acknowledgement_tl #1 } + { \__nju_bookmark_toc:V \l__nju_name_acknowledgementa_tl } + { \__nju_chapter:V \l__nju_name_acknowledgement_tl #1 } } { \cleardoublepage } \NewDocumentCommand \njupaperlist - { O { \c__nju_name_paperlist_tl } m } + { O { \l__nju_name_paperlist_tl } m } { \group_begin: \RenewDocumentCommand \mkbibnamegiven { m } { \ifitemannotation { thesisauthor } - { \njuline { \bf ##1 } } { ##1 } } + { \njuline { \bf ##1 } } {##1} } \RenewDocumentCommand \mkbibnamefamily { m } { \ifitemannotation { thesisauthor } - { \njuline { \bf ##1 } } { ##1 } } + { \njuline { \bf ##1 } } {##1} } \RenewDocumentCommand \mkbibdateshort { m m m } - { \textbf { \thefield { ##1 } } } + { \textbf { \thefield {##1} } } \newrefsection \nocite {#2} \printbibliography [ heading = subbibliography, title = #1 ] @@ -1874,13 +1951,13 @@ } \NewDocumentEnvironment { notation } { O { 10 em } O { 5 em } } { - \__nju_chapter:V \c__nju_name_notation_tl + \__nju_chapter:V \l__nju_name_notation_tl \__nju_make_notation:nn {#1} {#2} } { \endlist \cleardoublepage } \NewDocumentEnvironment { notation* } { O { 10 em } O { 5 em } } { - \chapter * { \c__nju_name_notation_tl } + \chapter * { \l__nju_name_notation_tl } \__nju_make_notation:nn {#1} {#2} } { \endlist \cleardoublepage } |