diff options
Diffstat (limited to 'Master/texmf-dist/tex')
80 files changed, 2814 insertions, 3492 deletions
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-ja.def deleted file mode 100644 index 7a1a06ae70c..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-ja.def +++ /dev/null @@ -1,65 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-adobe-ja.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,adobe,ja') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Adobe CJK fonts definition for Japanese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-adobe-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { cjk } { adobe } } - { - \setCJKmainfont { KozMinPr6N } - [ - UprightFont = *-Light , - BoldFont = *-Bold - ] - \setCJKsansfont { KozGoPr6N } - [ - UprightFont = *-Medium , - BoldFont = *-Bold - ] - \setCJKmonofont { KozMinPr6N-Light } - \setCJKfamilyfont { jamin } { KozMinPr6N } - [ - UprightFont = *-Light , - BoldFont = *-Bold - ] - \setCJKfamilyfont { jagoth } { KozGoPr6N } - [ - UprightFont = *-Medium , - BoldFont = *-Bold - ] - \setCJKfamilyfont { zhsong } { AdobeSongStd-Light } - [ AutoFakeBold = 3 , ItalicFont = AdobeKaitiStd-Regular ] - \setCJKfamilyfont { zhhei } { AdobeHeitiStd-Regular } [ AutoFakeBold = 3 ] - \setCJKfamilyfont { zhfs } { AdobeFangsongStd-Regular } - \setCJKfamilyfont { zhkai } { AdobeKaitiStd-Regular } - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\NewDocumentCommand \mincho { } { \CJKfamily { jamin } } -\NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } -\endinput -%% -%% End of file `sjtu-cjk-font-adobe-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-zh.def deleted file mode 100644 index a1e0c1f44f8..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-zh.def +++ /dev/null @@ -1,53 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-adobe-zh.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,adobe,zh') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Adobe CJK fonts definition for Chinese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-adobe-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nnn - { \__sjtu_fontset_error:nn { cjk } { adobe } } - { - \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { adobe } - \ctex_punct_set:n { adobe } - \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } - \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } - \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } - } - { - \setCJKmainfont { AdobeSongStd-Light } - [ AutoFakeBold = 3 , ItalicFont = AdobeKaitiStd-Regular ] - \setCJKsansfont { AdobeHeitiStd-Regular } [ AutoFakeBold = 3 ] - \setCJKmonofont { AdobeFangsongStd-Regular } - \setCJKfamilyfont { zhsong } { AdobeSongStd-Light } - [ AutoFakeBold = 3 , ItalicFont = AdobeKaitiStd-Regular ] - \setCJKfamilyfont { zhhei } { AdobeHeitiStd-Regular } [ AutoFakeBold = 3 ] - \setCJKfamilyfont { zhfs } { AdobeFangsongStd-Regular } - \setCJKfamilyfont { zhkai } { AdobeKaitiStd-Regular } - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\endinput -%% -%% End of file `sjtu-cjk-font-adobe-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe.def index 6fb16d0b312..db34c621a96 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,cjk,adobe,und') +%% sjtutex.dtx (with options: `font,cjk,adobe') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,13 +21,59 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Adobe CJK fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-cjk-font-adobe.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl - { \ctex_file_input:n { sjtu-cjk-font-adobe-ja.def } } - { \ctex_file_input:n { sjtu-cjk-font-adobe-zh.def } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF + { + \__sjtu_if_main_lang_ja:TF + { + \setCJKmainfont { KozMinPr6N } + [ + UprightFont = *-Light , + BoldFont = *-Bold + ] + \setCJKsansfont { KozGoPr6N } + [ + UprightFont = *-Medium , + BoldFont = *-Bold + ] + \setCJKmonofont { KozMinPr6N-Light } + \setCJKfamilyfont { jamin } { KozMinPr6N } + [ + UprightFont = *-Light , + BoldFont = *-Bold + ] + \setCJKfamilyfont { jagoth } { KozGoPr6N } + [ + UprightFont = *-Medium , + BoldFont = *-Bold + ] + \NewDocumentCommand \mincho { } { \CJKfamily { jamin } } + \NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } + } + { + \setCJKmainfont { AdobeSongStd-Light } + [ AutoFakeBold = 3 , ItalicFont = AdobeKaitiStd-Regular ] + \setCJKsansfont { AdobeHeitiStd-Regular } [ AutoFakeBold = 3 ] + \setCJKmonofont { AdobeFangsongStd-Regular } + } + \setCJKfamilyfont { zhsong } { AdobeSongStd-Light } + [ AutoFakeBold = 3 , ItalicFont = AdobeKaitiStd-Regular ] + \setCJKfamilyfont { zhhei } { AdobeHeitiStd-Regular } [ AutoFakeBold = 3 ] + \setCJKfamilyfont { zhfs } { AdobeFangsongStd-Regular } + \setCJKfamilyfont { zhkai } { AdobeKaitiStd-Regular } + \NewDocumentCommand \songti { } { \CJKfamily { zhsong } } + \NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } + \NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } + \NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } + } + { + \__sjtu_if_main_lang_ja:TF + { \__sjtu_fontset_error:nn { cjk } { adobe } } + { \ctex_file_input:n { ctex-fontset-adobe.def } } + } \endinput %% %% End of file `sjtu-cjk-font-adobe.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-ja.def deleted file mode 100644 index 922dc4d3d27..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-ja.def +++ /dev/null @@ -1,91 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-fandol-ja.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,fandol,ja') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Fandol CJK fonts definition for Japanese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-fandol-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { cjk } { fandol } } - { - \setCJKmainfont { HaranoAjiMincho } - [ - Extension = .otf , - UprightFont = *-Regular , - BoldFont = *-Bold - ] - \setCJKsansfont { HaranoAjiGothic } - [ - Extension = .otf , - UprightFont = *-Medium , - BoldFont = *-Bold - ] - \setCJKmonofont { HaranoAjiGothic } - [ - Extension = .otf , - UprightFont = *-Regular - ] - \setCJKfamilyfont { jamin } { HaranoAjiMincho } - [ - Extension = .otf , - UprightFont = *-Regular , - BoldFont = *-Bold - ] - \setCJKfamilyfont { jagoth } { HaranoAjiGothic } - [ - Extension = .otf , - UprightFont = *-Medium , - BoldFont = *-Bold - ] - \setCJKfamilyfont { zhsong } { FandolSong } - [ - Extension = .otf , - UprightFont = *-Regular , - BoldFont = *-Bold , - ItalicFont = FandolKai-Regular - ] - \setCJKfamilyfont { zhhei } { FandolHei } - [ - Extension = .otf , - UprightFont = *-Regular, - BoldFont = *-Bold - ] - \setCJKfamilyfont { zhfs } { FandolFang } - [ - Extension = .otf , - UprightFont = *-Regular - ] - \setCJKfamilyfont { zhkai } { FandolKai } - [ - Extension = .otf , - UprightFont = *-Regular - ] - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\NewDocumentCommand \mincho { } { \CJKfamily { jamin } } -\NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } -\endinput -%% -%% End of file `sjtu-cjk-font-fandol-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-zh.def deleted file mode 100644 index 525605b2915..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-zh.def +++ /dev/null @@ -1,85 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-fandol-zh.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,fandol,zh') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Fandol CJK fonts definition for Chinese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-fandol-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nnn - { \__sjtu_fontset_error:nn { cjk } { fandol } } - { - \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { fandol } - \ctex_punct_set:n { fandol } - \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } - \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } - \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } - } - { - \setCJKmainfont { FandolSong } - [ - Extension = .otf , - UprightFont = *-Regular , - BoldFont = *-Bold , - ItalicFont = FandolKai-Regular - ] - \setCJKsansfont { FandolHei } - [ - Extension = .otf , - UprightFont = *-Regular , - BoldFont = *-Bold - ] - \setCJKmonofont { FandolFang } - [ - Extension = .otf , - UprightFont = *-Regular - ] - \setCJKfamilyfont { zhsong } { FandolSong } - [ - Extension = .otf , - UprightFont = *-Regular , - BoldFont = *-Bold , - ItalicFont = FandolKai-Regular - ] - \setCJKfamilyfont { zhhei } { FandolHei } - [ - Extension = .otf , - UprightFont = *-Regular, - BoldFont = *-Bold - ] - \setCJKfamilyfont { zhfs } { FandolFang } - [ - Extension = .otf , - UprightFont = *-Regular - ] - \setCJKfamilyfont { zhkai } { FandolKai } - [ - Extension = .otf , - UprightFont = *-Regular - ] - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\endinput -%% -%% End of file `sjtu-cjk-font-fandol-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol.def index deb9f1bd937..31a70cec8ca 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,cjk,fandol,und') +%% sjtutex.dtx (with options: `font,cjk,fandol') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,13 +21,98 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Fandol CJK fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-cjk-font-fandol.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl - { \ctex_file_input:n { sjtu-cjk-font-fandol-ja.def } } - { \ctex_file_input:n { sjtu-cjk-font-fandol-zh.def } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF + { + \__sjtu_if_main_lang_ja:TF + { + \setCJKmainfont { HaranoAjiMincho } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold + ] + \setCJKsansfont { HaranoAjiGothic } + [ + Extension = .otf , + UprightFont = *-Medium , + BoldFont = *-Bold + ] + \setCJKmonofont { HaranoAjiGothic } + [ + Extension = .otf , + UprightFont = *-Regular + ] + \setCJKfamilyfont { jamin } { HaranoAjiMincho } + [ + Extension = .otf , + BoldFont = *-Bold + ] + \setCJKfamilyfont { jagoth } { HaranoAjiGothic } + [ + Extension = .otf , + UprightFont = *-Medium , + BoldFont = *-Bold + ] + \NewDocumentCommand \mincho { } { \CJKfamily { jamin } } + \NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } + } + { + \setCJKmainfont { FandolSong } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold , + ItalicFont = FandolKai-Regular + ] + \setCJKsansfont { FandolHei } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold + ] + \setCJKmonofont { FandolFang } + [ + Extension = .otf , + UprightFont = *-Regular + ] + } + \setCJKfamilyfont { zhsong } { FandolSong } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold , + ItalicFont = FandolKai-Regular + ] + \setCJKfamilyfont { zhhei } { FandolHei } + [ + Extension = .otf , + UprightFont = *-Regular, + BoldFont = *-Bold + ] + \setCJKfamilyfont { zhfs } { FandolFang } + [ + Extension = .otf , + UprightFont = *-Regular + ] + \setCJKfamilyfont { zhkai } { FandolKai } + [ + Extension = .otf , + UprightFont = *-Regular + ] + \NewDocumentCommand \songti { } { \CJKfamily { zhsong } } + \NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } + \NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } + \NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } + } + { + \__sjtu_if_main_lang_ja:TF + { \__sjtu_fontset_error:nn { cjk } { fandol } } + { \ctex_file_input:n { ctex-fontset-fandol.def } } + } \endinput %% %% End of file `sjtu-cjk-font-fandol.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-ja.def deleted file mode 100644 index 4ed4090bd02..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-ja.def +++ /dev/null @@ -1,49 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-founder-ja.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,founder,ja') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Founder CJK fonts definition for Japanese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-founder-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { cjk } { founder } } - { - \setCJKmainfont { ipam.ttf } [ AutoFakeBold = 3 ] - \setCJKsansfont { ipag.ttf } [ AutoFakeBold = 3 ] - \setCJKmonofont { ipag.ttf } - \setCJKfamilyfont { jamin } { ipam.ttf } [ AutoFakeBold = 3 ] - \setCJKfamilyfont { jagoth } { ipag.ttf } [ AutoFakeBold = 3 ] - \setCJKfamilyfont { zhsong } { FZShuSong-Z01 } - [ AutoFakeBold = 3 , ItalicFont = FZKai-Z03 ] - \setCJKfamilyfont { zhhei } { FZHei-B01 } [ AutoFakeBold = 3 ] - \setCJKfamilyfont { zhkai } { FZKai-Z03 } - \setCJKfamilyfont { zhfs } { FZFangSong-Z02 } - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\NewDocumentCommand \mincho { } { \CJKfamily { jamin } } -\NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } -\endinput -%% -%% End of file `sjtu-cjk-font-founder-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-zh.def deleted file mode 100644 index 685ef91a466..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-zh.def +++ /dev/null @@ -1,52 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-founder-zh.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,founder,zh') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Founder CJK fonts definition for Chinese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-founder-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { - \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { founder } - \ctex_punct_set:n { founder } - \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } - \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } - \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } - } - { - \setCJKmainfont { FZShuSong-Z01 } - [ AutoFakeBold = 3 , ItalicFont = FZKai-Z03 ] - \setCJKsansfont { FZHei-B01 } [ AutoFakeBold = 3 ] - \setCJKmonofont { FZFangSong-Z02 } - \setCJKfamilyfont { zhsong } { FZShuSong-Z01 } - [ AutoFakeBold = 3 , ItalicFont = FZKai-Z03 ] - \setCJKfamilyfont { zhhei } { FZHei-B01 } [ AutoFakeBold = 3 ] - \setCJKfamilyfont { zhkai } { FZKai-Z03 } - \setCJKfamilyfont { zhfs } { FZFangSong-Z02 } - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\endinput -%% -%% End of file `sjtu-cjk-font-founder-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder.def index 006c69d9e17..a5eec052753 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,cjk,founder,und') +%% sjtutex.dtx (with options: `font,cjk,founder') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,13 +21,43 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Founder CJK fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-cjk-font-founder.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl - { \ctex_file_input:n { sjtu-cjk-font-founder-ja.def } } - { \ctex_file_input:n { sjtu-cjk-font-founder-zh.def } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF + { + \__sjtu_if_main_lang_ja:TF + { + \setCJKmainfont { ipam.ttf } [ AutoFakeBold = 3 ] + \setCJKsansfont { ipag.ttf } [ AutoFakeBold = 3 ] + \setCJKmonofont { ipag.ttf } + \setCJKfamilyfont { jamin } { ipam.ttf } [ AutoFakeBold = 3 ] + \setCJKfamilyfont { jagoth } { ipag.ttf } [ AutoFakeBold = 3 ] + \NewDocumentCommand \mincho { } { \CJKfamily { jamin } } + \NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } + } + { + \setCJKmainfont { FZShuSong-Z01 } + [ AutoFakeBold = 3 , ItalicFont = FZKai-Z03 ] + \setCJKsansfont { FZHei-B01 } [ AutoFakeBold = 3 ] + \setCJKmonofont { FZFangSong-Z02 } + } + \setCJKfamilyfont { zhsong } { FZShuSong-Z01 } + [ AutoFakeBold = 3 , ItalicFont = FZKai-Z03 ] + \setCJKfamilyfont { zhhei } { FZHei-B01 } [ AutoFakeBold = 3 ] + \setCJKfamilyfont { zhkai } { FZKai-Z03 } + \setCJKfamilyfont { zhfs } { FZFangSong-Z02 } + \NewDocumentCommand \songti { } { \CJKfamily { zhsong } } + \NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } + \NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } + \NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } + } + { + \__sjtu_if_main_lang_ja:TF + { \__sjtu_fontset_error:nn { cjk } { founder } } + { \ctex_file_input:n { ctex-fontset-founder.def } } + } \endinput %% %% End of file `sjtu-cjk-font-founder.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-hanyi.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-hanyi.def new file mode 100644 index 00000000000..e1bbefae04c --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-hanyi.def @@ -0,0 +1,87 @@ +%% +%% This is file `sjtu-cjk-font-hanyi.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `font,cjk,hanyi') +%% +%% Copyright (C) SJTUG +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ + {Hanyi CJK fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-cjk-font-hanyi.def} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF + { + \__sjtu_if_main_lang_ja:TF + { + \setCJKmainfont { HaranoAjiMincho } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Medium + ] + \setCJKsansfont { HaranoAjiGothic } + [ + Extension = .otf , + UprightFont = *-Medium , + BoldFont = *-Bold + ] + \setCJKmonofont { HaranoAjiGothic } + [ + Extension = .otf , + UprightFont = *-Regular + ] + \setCJKfamilyfont { jamin } { HaranoAjiMincho } + [ + Extension = .otf , + BoldFont = *-Medium + ] + \setCJKfamilyfont { jagoth } { HaranoAjiGothic } + [ + Extension = .otf , + UprightFont = *-Medium , + BoldFont = *-Bold + ] + \NewDocumentCommand \mincho { } { \CJKfamily { jamin } } + \NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } + } + { + \setCJKmainfont { HYShuSongEr~S } + [ BoldFont = HYZhongSong~S, ItalicFont = HYKaiTi~S ] + \setCJKsansfont { HYZhongHei~S } [ BoldFont = HYDaHei~S ] + \setCJKmonofont { HYFangSong~S } + } + \setCJKfamilyfont { zhsong } { HYShuSongEr~S } + [ BoldFont = HYZhongSong~S ] + \setCJKfamilyfont { zhhei } { HYZhongHei~S } + [ BoldFont = HYDaHei~S ] + \setCJKfamilyfont { zhkai } { HYKaiTi~S } + \setCJKfamilyfont { zhfs } { HYFangSong~S } + \NewDocumentCommand \songti { } { \CJKfamily { zhsong } } + \NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } + \NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } + \NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } + } + { + \__sjtu_if_main_lang_ja:TF + { \__sjtu_fontset_error:nn { cjk } { hanyi } } + { \ctex_file_input:n { ctex-fontset-hanyi.def } } + } +\endinput +%% +%% End of file `sjtu-cjk-font-hanyi.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-ja.def deleted file mode 100644 index 5b9ed84fc04..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-ja.def +++ /dev/null @@ -1,78 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-mac-ja.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,mac,ja') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {macOS CJK fonts definition for Japanese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-mac-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { cjk } { mac } } - { - \setCJKmainfont { HiraMinProN } - [ - UprightFont = *-W3 , - BoldFont = *-W6 - ] - \setCJKsansfont { HiraKakuProN } - [ - UprightFont = *-W3 , - BoldFont = *-W6 - ] - \setCJKmonofont { HiraMinProN-W3 } - \setCJKfamilyfont { jamin } { HiraMinProN } - [ - UprightFont = *-W3 , - BoldFont = *-W6 - ] - \setCJKfamilyfont { jagoth } { HiraKakuProN } - [ - UprightFont = *-W3 , - BoldFont = *-W6 - ] - \setCJKfamilyfont { zhsong } { Songti~SC } - [ - UprightFont = *~Light , - BoldFont = *~Bold , - ItalicFont = Kaiti~SC~Regular , - BoldItalicFont = Kaiti~SC~Bold - ] - \setCJKfamilyfont { zhhei } { Heiti~SC } - [ - UprightFont = *~Medium , - AutoFakeBold = 3 - ] - \setCJKfamilyfont { zhfs } { STFangsong } - \setCJKfamilyfont { zhkai } { Kaiti~SC } - [ - UprightFont = *~Regular , - BoldFont = *~Bold - ] - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\NewDocumentCommand \mincho { } { \CJKfamily { jamin } } -\NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } -\endinput -%% -%% End of file `sjtu-cjk-font-mac-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-zh.def deleted file mode 100644 index 8d25704c60b..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-zh.def +++ /dev/null @@ -1,76 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-mac-zh.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,mac,zh') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {macOS CJK fonts definition for Chinese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-mac-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nnn - { \__sjtu_fontset_error:nn { cjk } { mac } } - { - \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { mac } - \ctex_punct_set:n { mac } - \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } - \ctex_punct_map_family:nn { \CJKsfdefault } { zhpf } - \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhpf } - \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } - } - { - \setCJKmainfont { Songti~SC } - [ - UprightFont = *~Light , - BoldFont = *~Bold , - ItalicFont = Kaiti~SC~Regular , - BoldItalicFont = Kaiti~SC~Bold - ] - \setCJKsansfont { Heiti~SC } - [ - UprightFont = *~Medium , - AutoFakeBold = 3 - ] - \setCJKmonofont { STFangsong } - \setCJKfamilyfont { zhsong } { Songti~SC } - [ - UprightFont = *~Light , - BoldFont = *~Bold , - ItalicFont = Kaiti~SC~Regular , - BoldItalicFont = Kaiti~SC~Bold - ] - \setCJKfamilyfont { zhhei } { Heiti~SC } - [ - UprightFont = *~Medium , - AutoFakeBold = 3 - ] - \setCJKfamilyfont { zhfs } { STFangsong } - \setCJKfamilyfont { zhkai } { Kaiti~SC } - [ - UprightFont = *~Regular , - BoldFont = *~Bold - ] - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\endinput -%% -%% End of file `sjtu-cjk-font-mac-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac.def index dea9680ebca..1a086ef2a7a 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,cjk,mac,und') +%% sjtutex.dtx (with options: `font,cjk,mac') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,13 +21,81 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {macOS CJK fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-cjk-font-mac.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl - { \ctex_file_input:n { sjtu-cjk-font-mac-ja.def } } - { \ctex_file_input:n { sjtu-cjk-font-mac-zh.def } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF + { + \__sjtu_if_main_lang_ja:TF + { + \setCJKmainfont { HiraMinProN } + [ + UprightFont = *-W3 , + BoldFont = *-W6 + ] + \setCJKsansfont { HiraKakuProN } + [ + UprightFont = *-W3 , + BoldFont = *-W6 + ] + \setCJKmonofont { HiraMinProN-W3 } + \setCJKfamilyfont { jamin } { HiraMinProN } + [ + UprightFont = *-W3 , + BoldFont = *-W6 + ] + \setCJKfamilyfont { jagoth } { HiraKakuProN } + [ + UprightFont = *-W3 , + BoldFont = *-W6 + ] + \NewDocumentCommand \mincho { } { \CJKfamily { jamin } } + \NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } + } + { + \setCJKmainfont { Songti~SC } + [ + UprightFont = *~Light , + BoldFont = *~Bold , + ItalicFont = Kaiti~SC~Regular , + BoldItalicFont = Kaiti~SC~Bold + ] + \setCJKsansfont { Heiti~SC } + [ + UprightFont = *~Medium , + AutoFakeBold = 3 + ] + \setCJKmonofont { STFangsong } + } + \setCJKfamilyfont { zhsong } { Songti~SC } + [ + UprightFont = *~Light , + BoldFont = *~Bold , + ItalicFont = Kaiti~SC~Regular , + BoldItalicFont = Kaiti~SC~Bold + ] + \setCJKfamilyfont { zhhei } { Heiti~SC } + [ + UprightFont = *~Medium , + AutoFakeBold = 3 + ] + \setCJKfamilyfont { zhfs } { STFangsong } + \setCJKfamilyfont { zhkai } { Kaiti~SC } + [ + UprightFont = *~Regular , + BoldFont = *~Bold + ] + \NewDocumentCommand \songti { } { \CJKfamily { zhsong } } + \NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } + \NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } + \NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } + } + { + \__sjtu_if_main_lang_ja:TF + { \__sjtu_fontset_error:nn { cjk } { mac } } + { \ctex_file_input:n { ctex-fontset-mac.def } } + } \endinput %% %% End of file `sjtu-cjk-font-mac.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-ja.def deleted file mode 100644 index a2480b0312f..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-ja.def +++ /dev/null @@ -1,75 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-ubuntu-ja.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,ubuntu,ja') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Ubuntu CJK fonts definition for Japanese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-ubuntu-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { cjk } { ubuntu } } - { - \setCJKmainfont { Noto~Serif~CJK~JP } - [ - UprightFont = *~Light , - BoldFont = *~Bold - ] - \setCJKsansfont { Noto~Sans~CJK~JP } - [ - UprightFont = *~Medium , - BoldFont = *~Bold - ] - \setCJKmonofont { Noto~Serif~CJK~JP } - [ - UprightFont = *~Light , - BoldFont = *~Bold - ] - \setCJKfamilyfont { jamin } { Noto~Serif~CJK~JP } - [ - UprightFont = *~Light , - BoldFont = *~Bold - ] - \setCJKfamilyfont { jagoth } { Noto~Sans~CJK~JP } - [ - UprightFont = *~Medium , - BoldFont = *~Bold - ] - \setCJKfamilyfont { zhsong } { Noto~Serif~CJK~SC } - [ - UprightFont = *~Light , - BoldFont = *~Bold , - ItalicFont = AR~PL~KaitiM~GB - ] - \setCJKfamilyfont { zhhei } { Noto~Sans~CJK~SC } - [ - UprightFont = *~Medium , - BoldFont = *~Bold - ] - \setCJKfamilyfont { zhkai } { AR~PL~KaitiM~GB } - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\NewDocumentCommand \mincho { } { \CJKfamily { jamin } } -\NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } -\endinput -%% -%% End of file `sjtu-cjk-font-ubuntu-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-zh.def deleted file mode 100644 index 57522f0a756..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-zh.def +++ /dev/null @@ -1,71 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-ubuntu-zh.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,ubuntu,zh') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Ubuntu CJK fonts definition for Chinese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-ubuntu-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nnn - { \__sjtu_fontset_error:nn { cjk } { ubuntu } } - { - \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhsong } { ubuntu } - \ctex_punct_set:n { ubuntu } - \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } - \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } - \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } - } - { - \setCJKmainfont { Noto~Serif~CJK~SC } - [ - UprightFont = *~Light , - BoldFont = *~Bold , - ItalicFont = AR~PL~KaitiM~GB - ] - \setCJKsansfont { Noto~Sans~CJK~SC } - [ - UprightFont = *~Medium , - BoldFont = *~Bold - ] - \setCJKmonofont { Noto~Serif~CJK~SC } - [ - UprightFont = *~Light , - BoldFont = *~Bold - ] - \setCJKfamilyfont { zhsong } { Noto~Serif~CJK~SC } - [ - UprightFont = *~Light , - BoldFont = *~Bold , - ItalicFont = AR~PL~KaitiM~GB - ] - \setCJKfamilyfont { zhhei } { Noto~Sans~CJK~SC } - [ - UprightFont = *~Medium , - BoldFont = *~Bold - ] - \setCJKfamilyfont { zhkai } { AR~PL~KaitiM~GB } - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\endinput -%% -%% End of file `sjtu-cjk-font-ubuntu-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu.def index 47735857fc3..411b582870e 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,cjk,ubuntu,und') +%% sjtutex.dtx (with options: `font,cjk,ubuntu') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,13 +21,81 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Ubuntu CJK fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-cjk-font-ubuntu.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl - { \ctex_file_input:n { sjtu-cjk-font-ubuntu-ja.def } } - { \ctex_file_input:n { sjtu-cjk-font-ubuntu-zh.def } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF + { + \__sjtu_if_main_lang_ja:TF + { + \setCJKmainfont { Noto~Serif~CJK~JP } + [ + UprightFont = *~Light , + BoldFont = *~Bold + ] + \setCJKsansfont { Noto~Sans~CJK~JP } + [ + UprightFont = *~Medium , + BoldFont = *~Bold + ] + \setCJKmonofont { Noto~Serif~CJK~JP } + [ + UprightFont = *~Light , + BoldFont = *~Bold + ] + \setCJKfamilyfont { jamin } { Noto~Serif~CJK~JP } + [ + UprightFont = *~Light , + BoldFont = *~Bold + ] + \setCJKfamilyfont { jagoth } { Noto~Sans~CJK~JP } + [ + UprightFont = *~Medium , + BoldFont = *~Bold + ] + \NewDocumentCommand \mincho { } { \CJKfamily { jamin } } + \NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } + } + { + \setCJKmainfont { Noto~Serif~CJK~SC } + [ + UprightFont = *~Light , + BoldFont = *~Bold , + ItalicFont = AR~PL~KaitiM~GB + ] + \setCJKsansfont { Noto~Sans~CJK~SC } + [ + UprightFont = *~Medium , + BoldFont = *~Bold + ] + \setCJKmonofont { Noto~Serif~CJK~SC } + [ + UprightFont = *~Light , + BoldFont = *~Bold + ] + } + \setCJKfamilyfont { zhsong } { Noto~Serif~CJK~SC } + [ + UprightFont = *~Light , + BoldFont = *~Bold , + ItalicFont = AR~PL~KaitiM~GB + ] + \setCJKfamilyfont { zhhei } { Noto~Sans~CJK~SC } + [ + UprightFont = *~Medium , + BoldFont = *~Bold + ] + \setCJKfamilyfont { zhkai } { AR~PL~KaitiM~GB } + \NewDocumentCommand \songti { } { \CJKfamily { zhsong } } + \NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } + \NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } + } + { + \__sjtu_if_main_lang_ja:TF + { \__sjtu_fontset_error:nn { cjk } { ubuntu } } + { \ctex_file_input:n { ctex-fontset-ubuntu.def } } + } \endinput %% %% End of file `sjtu-cjk-font-ubuntu.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-ja.def deleted file mode 100644 index 50bef8c98d9..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-ja.def +++ /dev/null @@ -1,49 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-windows-ja.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,windows,ja') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Windows CJK fonts definition for Japanese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-windows-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { cjk } { windows } } - { - \setCJKmainfont { MS~Mincho } [ AutoFakeBold = 3 ] - \setCJKsansfont { MS~Gothic } [ AutoFakeBold = 3 ] - \setCJKmonofont { MS~Mincho } - \setCJKfamilyfont { jamin } { MS~Mincho } [ AutoFakeBold = 3 ] - \setCJKfamilyfont { jagoth } { MS~Gothic } [ AutoFakeBold = 3 ] - \setCJKfamilyfont { zhsong } { SimSun } - [ AutoFakeBold = 3 , ItalicFont = KaiTi ] - \setCJKfamilyfont { zhhei } { SimHei } [ AutoFakeBold = 3 ] - \setCJKfamilyfont { zhkai } { KaiTi } - \setCJKfamilyfont { zhfs } { FangSong } - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\NewDocumentCommand \mincho { } { \CJKfamily { jamin } } -\NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } -\endinput -%% -%% End of file `sjtu-cjk-font-windows-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-zh.def deleted file mode 100644 index 18930a244ce..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-zh.def +++ /dev/null @@ -1,52 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-windows-zh.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `font,cjk,windows,zh') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Windows CJK fonts definition for Chinese (SJTUTeX)} -\ProvidesExplFile{sjtu-cjk-font-windows-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { - \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { windows } - \ctex_punct_set:n { windows } - \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } - \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } - \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } - } - { - \setCJKmainfont { SimSun } - [ AutoFakeBold = 3 , ItalicFont = KaiTi ] - \setCJKsansfont { SimHei } [ AutoFakeBold = 3 ] - \setCJKmonofont { FangSong } - \setCJKfamilyfont { zhsong } { SimSun } - [ AutoFakeBold = 3 , ItalicFont = KaiTi ] - \setCJKfamilyfont { zhhei } { SimHei } [ AutoFakeBold = 3 ] - \setCJKfamilyfont { zhkai } { KaiTi } - \setCJKfamilyfont { zhfs } { FangSong } - } -\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } -\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } -\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } -\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } -\endinput -%% -%% End of file `sjtu-cjk-font-windows-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows.def index 105e9d6900a..8ae532d1bc7 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,cjk,windows,und') +%% sjtutex.dtx (with options: `font,cjk,windows') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,13 +21,43 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Windows CJK fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-cjk-font-windows.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl - { \ctex_file_input:n { sjtu-cjk-font-windows-ja.def } } - { \ctex_file_input:n { sjtu-cjk-font-windows-zh.def } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF + { + \__sjtu_if_main_lang_ja:TF + { + \setCJKmainfont { MS~Mincho } [ AutoFakeBold = 3 ] + \setCJKsansfont { MS~Gothic } [ AutoFakeBold = 3 ] + \setCJKmonofont { MS~Mincho } + \setCJKfamilyfont { jamin } { MS~Mincho } [ AutoFakeBold = 3 ] + \setCJKfamilyfont { jagoth } { MS~Gothic } [ AutoFakeBold = 3 ] + \NewDocumentCommand \mincho { } { \CJKfamily { jamin } } + \NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } + } + { + \setCJKmainfont { SimSun } + [ AutoFakeBold = 3 , ItalicFont = KaiTi ] + \setCJKsansfont { SimHei } [ AutoFakeBold = 3 ] + \setCJKmonofont { FangSong } + } + \setCJKfamilyfont { zhsong } { SimSun } + [ AutoFakeBold = 3 , ItalicFont = KaiTi ] + \setCJKfamilyfont { zhhei } { SimHei } [ AutoFakeBold = 3 ] + \setCJKfamilyfont { zhkai } { KaiTi } + \setCJKfamilyfont { zhfs } { FangSong } + \NewDocumentCommand \songti { } { \CJKfamily { zhsong } } + \NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } + \NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } + \NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } + } + { + \__sjtu_if_main_lang_ja:TF + { \__sjtu_fontset_error:nn { cjk } { windows } } + { \ctex_file_input:n { ctex-fontset-windows.def } } + } \endinput %% %% End of file `sjtu-cjk-font-windows.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-cambria.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-cambria.def index aeff9077b24..3a256512728 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-cambria.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-cambria.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,math,cambria') +%% sjtutex.dtx (with options: `font,math,otf,cambria') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,12 +21,11 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Cambria math fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-math-font-cambria.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { math } { cambria } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \RequirePackage { unicode-math } \setmathfont { Cambria~Math } @@ -33,6 +33,7 @@ \setmathsf { Calibri } \setmathtt { Consolas } [ Scale = 0.95 ] } + { \__sjtu_fontset_error:nn { math } { cambria } } \endinput %% %% End of file `sjtu-math-font-cambria.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-libertinus.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-libertinus.def index 95d08e7805a..6d2edf10a00 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-libertinus.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-libertinus.def @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `font,math,libertinus') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,16 +21,11 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Libertinus math fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-math-font-libertinus.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { - \exp_args:No \PassOptionsToPackage - { \g__sjtu_math_font_options_clist } { libertinust1math } - \RequirePackage { libertinust1math } - } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \RequirePackage { unicode-math } \bool_if:NTF \g__sjtu_upright_integral_bool @@ -67,6 +63,11 @@ BoldSlantedFeatures = { FakeSlant = 0.2 } ] } + { + \exp_args:No \PassOptionsToPackage + { \g__sjtu_math_font_options_clist } { libertinust1math } + \RequirePackage { libertinust1math } + } \endinput %% %% End of file `sjtu-math-font-libertinus.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-lm.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-lm.def index be6790c68c0..e0a2a9b2e62 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-lm.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-lm.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,math,lm') +%% sjtutex.dtx (with options: `font,math,type1,lm') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,10 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Latin Modern math fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-math-font-lm.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} + {\ExplFileDate}{2.2}{\ExplFileDescription} \RequirePackage { amssymb, upgreek } \SetSymbolFont { operators } { normal } { OT1 } { lmr } { m } { n } \SetSymbolFont { letters } { normal } { OML } { lmm } { m } { it } @@ -41,9 +42,9 @@ \SetMathAlphabet { \mathsf } { bold } { OT1 } { lmss } { bx } { n } \SetMathAlphabet { \mathit } { bold } { OT1 } { lmr } { bx } { it } \SetMathAlphabet { \mathtt } { bold } { OT1 } { lmtt } { m } { n } +\__sjtu_set_slanted_greek: \bool_if:NT \g__sjtu_upright_integral_bool { \RequirePackage { cmupint } } -\__sjtu_set_slanted_greek: \__sjtu_set_unimath_symbol: \endinput %% diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newcm.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newcm.def index 58c6edd416d..0b83d51b751 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newcm.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newcm.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,math,newcm') +%% sjtutex.dtx (with options: `font,math,otf,newcm') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,12 +21,11 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {New Computer Modern math fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-math-font-newcm.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { math } { newcm } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \RequirePackage { unicode-math } \bool_if:NTF \g__sjtu_upright_integral_bool @@ -94,6 +94,7 @@ BoldSlantedFeatures = { FakeSlant = 0.25 } ] } + { \__sjtu_fontset_error:nn { math } { newcm } } \endinput %% %% End of file `sjtu-math-font-newcm.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newpx.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newpx.def index d4331d64aa0..d904864ac6c 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newpx.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newpx.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,math,newpx') +%% sjtutex.dtx (with options: `font,math,type1,newpx') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,10 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {New PX math fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-math-font-newpx.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} + {\ExplFileDate}{2.2}{\ExplFileDescription} \tl_set_eq:NN \l__sjtu_save_encodingdefault_tl \encodingdefault \tl_set_eq:NN \l__sjtu_save_rmdefault_tl \rmdefault \tl_set_eq:NN \l__sjtu_save_sfdefault_tl \sfdefault diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newtx.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newtx.def index 5bc2283c466..798eef6e4ce 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newtx.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newtx.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,math,newtx') +%% sjtutex.dtx (with options: `font,math,type1,newtx') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,10 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {New TX math fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-math-font-newtx.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} + {\ExplFileDate}{2.2}{\ExplFileDescription} \tl_set_eq:NN \l__sjtu_save_encodingdefault_tl \encodingdefault \tl_set_eq:NN \l__sjtu_save_rmdefault_tl \rmdefault \tl_set_eq:NN \l__sjtu_save_sfdefault_tl \sfdefault diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-stixtwo.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-stixtwo.def index f9279e52c40..130f97690db 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-stixtwo.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-stixtwo.def @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `font,math,stixtwo') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,50 +21,11 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {STIX Two math fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-math-font-stixtwo.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { - \DeclareSizeFunction { sub } { \sub@sfcnt \@font@info } - \PassOptionsToPackage { notext } { stix2 } - \RequirePackage { stix2 } - \clist_map_inline:nn - { - \upalpha { "0B } , - \upbeta { "0C } , - \upgamma { "0D } , - \updelta { "0E } , - \upepsilon { "0F } , - \upzeta { "10 } , - \upeta { "11 } , - \uptheta { "12 } , - \upiota { "13 } , - \upkappa { "14 } , - \uplambda { "15 } , - \upmu { "16 } , - \upnu { "17 } , - \upxi { "18 } , - \uppi { "19 } , - \uprho { "1A } , - \upsigma { "1B } , - \uptau { "1C } , - \upupsilon { "1D } , - \upphi { "1E } , - \upchi { "1F } , - \uppsi { "20 } , - \upomega { "21 } , - \upvarepsilon { "22 } , - \upvartheta { "23 } , - \upvarpi { "24 } , - \upvarrho { "25 } , - \upvarsigma { "26 } , - \upvarphi { "27 } - } - { \__sjtu_declare_math_symbol:nnNn { \stix@lcgc } { operators } #1 } - \__sjtu_set_slanted_greek: - } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \RequirePackage { unicode-math } \bool_if:NTF \g__sjtu_upright_integral_bool @@ -94,7 +56,7 @@ BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, - Scale = 0.94, + Scale = 0.94 ] \setmathtt { texgyrecursor } @@ -107,6 +69,45 @@ Ligatures = CommonOff ] } + { + \DeclareSizeFunction { sub } { \sub@sfcnt \@font@info } + \PassOptionsToPackage { notext } { stix2 } + \RequirePackage { stix2 } + \clist_map_inline:nn + { + \upalpha { "0B } , + \upbeta { "0C } , + \upgamma { "0D } , + \updelta { "0E } , + \upepsilon { "0F } , + \upzeta { "10 } , + \upeta { "11 } , + \uptheta { "12 } , + \upiota { "13 } , + \upkappa { "14 } , + \uplambda { "15 } , + \upmu { "16 } , + \upnu { "17 } , + \upxi { "18 } , + \uppi { "19 } , + \uprho { "1A } , + \upsigma { "1B } , + \uptau { "1C } , + \upupsilon { "1D } , + \upphi { "1E } , + \upchi { "1F } , + \uppsi { "20 } , + \upomega { "21 } , + \upvarepsilon { "22 } , + \upvartheta { "23 } , + \upvarpi { "24 } , + \upvarrho { "25 } , + \upvarsigma { "26 } , + \upvarphi { "27 } + } + { \__sjtu_declare_math_symbol:nnNn { \stix@lcgc } { operators } #1 } + \__sjtu_set_slanted_greek: + } \endinput %% %% End of file `sjtu-math-font-stixtwo.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-times.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-times.def index b0aa00e2661..a9202eb6bc9 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-times.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-times.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,math,times') +%% sjtutex.dtx (with options: `font,math,type1,times') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,10 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Times math fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-math-font-times.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} + {\ExplFileDate}{2.2}{\ExplFileDescription} \PassOptionsToPackage { Symbol } { upgreek } \RequirePackage { amssymb, upgreek } \tl_set_eq:NN \l__sjtu_save_rmdefault_tl \rmdefault diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-xits.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-xits.def index 9da4c6376f2..9fed26ef441 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-xits.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-xits.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,math,xits') +%% sjtutex.dtx (with options: `font,math,otf,xits') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,12 +21,11 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {XITS math fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-math-font-xits.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { math } { xits } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \RequirePackage { unicode-math } \bool_if:NTF \g__sjtu_upright_integral_bool @@ -66,7 +66,7 @@ BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, - Scale = 0.94, + Scale = 0.94 ] \setmathtt { texgyrecursor } @@ -79,6 +79,7 @@ Ligatures = CommonOff ] } + { \__sjtu_fontset_error:nn { math } { xits } } \endinput %% %% End of file `sjtu-math-font-xits.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-cambria.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-cambria.def index 5f07e74f517..82525b151a2 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-cambria.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-cambria.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,text,cambria') +%% sjtutex.dtx (with options: `font,text,otf,cambria') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,17 +21,17 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Cambria text fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-text-font-cambria.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { text } { cambria } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \setmainfont { Cambria } \setsansfont { Calibri } \setmonofont { Consolas } [ Scale = 0.95 ] } + { \__sjtu_fontset_error:nn { text } { cambria } } \endinput %% %% End of file `sjtu-text-font-cambria.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-libertinus.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-libertinus.def index 95ed9fa7400..3394853e607 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-libertinus.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-libertinus.def @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `font,text,libertinus') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,17 +21,11 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Libertinus text fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-text-font-libertinus.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { - \tl_set:Nn \encodingdefault { T1 } - \tl_set:Nn \rmdefault { LibertinusSerif-TLF } - \tl_set:Nn \sfdefault { LibertinusSans-TLF } - \tl_set:Nn \ttdefault { lmtt } - } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \setmainfont { LibertinusSerif } @@ -60,6 +55,12 @@ BoldSlantedFeatures = { FakeSlant = 0.2 } ] } + { + \tl_set:Nn \encodingdefault { T1 } + \tl_set:Nn \rmdefault { LibertinusSerif-TLF } + \tl_set:Nn \sfdefault { LibertinusSans-TLF } + \tl_set:Nn \ttdefault { lmtt } + } \endinput %% %% End of file `sjtu-text-font-libertinus.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-lm.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-lm.def index 4ad4852c194..1bc565ddcbf 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-lm.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-lm.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,text,lm') +%% sjtutex.dtx (with options: `font,text,type1,lm') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,17 +21,17 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Latin Modern text fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-text-font-lm.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:F { \tl_set:Nn \encodingdefault { T1 } \tl_set:Nn \rmdefault { lmr } \tl_set:Nn \sfdefault { lmss } \tl_set:Nn \ttdefault { lmtt } - } { } + } \endinput %% %% End of file `sjtu-text-font-lm.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newcm.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newcm.def index bb07bfe0493..fa204c4c57e 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newcm.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newcm.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,text,newcm') +%% sjtutex.dtx (with options: `font,text,otf,newcm') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,12 +21,11 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {New Computer Modern text fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-text-font-newcm.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { text } { newcm } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \setmainfont { NewCM10 } @@ -82,6 +82,7 @@ BoldSlantedFeatures = { FakeSlant = 0.25 } ] } + { \__sjtu_fontset_error:nn { text } { newcm } } \endinput %% %% End of file `sjtu-text-font-newcm.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newpx.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newpx.def index 3cd4b850c49..79ea8688366 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newpx.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newpx.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,text,newpx') +%% sjtutex.dtx (with options: `font,text,type1,newpx') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,25 +21,20 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {New PX text fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-text-font-newpx.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { - \tl_set:Nn \encodingdefault { T1 } - \RequirePackage { newpxtext } - \tl_set:Nn \ttdefault { qcr } - } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \setmainfont { TeXGyrePagellaX } [ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic ] \setsansfont { texgyreheros } @@ -48,7 +44,7 @@ BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, - Scale = 0.94, + Scale = 0.94 ] \setmonofont { texgyrecursor } @@ -61,6 +57,14 @@ Ligatures = CommonOff ] } + { + \tl_set:Nn \encodingdefault { T1 } + \PassOptionsToPackage { nohelv, nott } { newpxtext } + \RequirePackage { newpxtext } + \tl_set:Nn \qhv@scale { 0.94 } + \tl_set:Nn \sfdefault { qhv } + \tl_set:Nn \ttdefault { qcr } + } \endinput %% %% End of file `sjtu-text-font-newpx.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newtx.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newtx.def index 3225a233e4b..ebea3535f22 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newtx.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newtx.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,text,newtx') +%% sjtutex.dtx (with options: `font,text,type1,newtx') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,25 +21,20 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {New TX text fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-text-font-newtx.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { - \tl_set:Nn \encodingdefault { T1 } - \RequirePackage { newtxtext } - \tl_set:Nn \ttdefault { qcr } - } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \setmainfont { TeXGyreTermesX } [ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic ] \setsansfont { texgyreheros } @@ -48,7 +44,7 @@ BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, - Scale = 0.94, + Scale = 0.94 ] \setmonofont { texgyrecursor } @@ -61,6 +57,14 @@ Ligatures = CommonOff ] } + { + \tl_set:Nn \encodingdefault { T1 } + \PassOptionsToPackage { nohelv, nott } { newtxtext } + \RequirePackage { newtxtext } + \tl_set:Nn \qhv@scale { 0.94 } + \tl_set:Nn \sfdefault { qhv } + \tl_set:Nn \ttdefault { qcr } + } \endinput %% %% End of file `sjtu-text-font-newtx.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-stixtwo.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-stixtwo.def index 0039c44a990..f3855d8b41f 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-stixtwo.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-stixtwo.def @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `font,text,stixtwo') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,21 +21,11 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {STIX Two text fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-text-font-stixtwo.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { - \tl_set:Nn \encodingdefault { T1 } - \DeclareEncodingSubset { TS1 } { ? } { 0 } - \UndeclareTextCommand { \textpertenthousand } { T1 } - \DeclareTextSymbolDefault { \textpertenthousand } { TS1 } - \tl_set:Nn \rmdefault { stix2 } - \tl_set:Nn \qhv@scale { 0.94 } - \tl_set:Nn \sfdefault { qhv } - \tl_set:Nn \ttdefault { qcr } - } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \setmainfont { STIXTwoText } @@ -53,7 +44,7 @@ BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, - Scale = 0.94, + Scale = 0.94 ] \setmonofont { texgyrecursor } @@ -66,6 +57,16 @@ Ligatures = CommonOff ] } + { + \tl_set:Nn \encodingdefault { T1 } + \DeclareEncodingSubset { TS1 } { ? } { 0 } + \UndeclareTextCommand { \textpertenthousand } { T1 } + \DeclareTextSymbolDefault { \textpertenthousand } { TS1 } + \tl_set:Nn \rmdefault { stix2 } + \tl_set:Nn \qhv@scale { 0.94 } + \tl_set:Nn \sfdefault { qhv } + \tl_set:Nn \ttdefault { qcr } + } \endinput %% %% End of file `sjtu-text-font-stixtwo.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-times.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-times.def index ccd8ade74ba..cb7ef245679 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-times.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-times.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,text,times') +%% sjtutex.dtx (with options: `font,text,type1,times') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,11 +21,16 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Times text fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-text-font-times.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF + { + \setmainfont { Times~New~Roman } [ Ligatures = Rare ] + \setsansfont { Arial } [ Scale = 0.94 ] + \setmonofont { Courier~New } + } { \tl_set:Nn \encodingdefault { T1 } \tl_set:Nn \rmdefault { ptm } @@ -32,11 +38,6 @@ \tl_set:Nn \sfdefault { phv } \tl_set:Nn \ttdefault { pcr } } - { - \setmainfont { Times~New~Roman } [ Ligatures = Rare ] - \setsansfont { Arial } [ Scale = 0.94 ] - \setmonofont { Courier~New } - } \endinput %% %% End of file `sjtu-text-font-times.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-xits.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-xits.def index b6fb8235667..42d8d4de561 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-xits.def +++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-xits.def @@ -4,11 +4,12 @@ %% %% The original source files were: %% -%% sjtutex.dtx (with options: `font,text,xits') +%% sjtutex.dtx (with options: `font,text,otf,xits') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,12 +21,11 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {XITS text fonts definition (SJTUTeX)} \ProvidesExplFile{sjtu-text-font-xits.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_fontset_case:nn - { \__sjtu_fontset_error:nn { text } { xits } } + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_if_engine_opentype:TF { \setmainfont { XITS } @@ -44,7 +44,7 @@ BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, - Scale = 0.94, + Scale = 0.94 ] \setmonofont { texgyrecursor } @@ -57,6 +57,7 @@ Ligatures = CommonOff ] } + { \__sjtu_fontset_error:nn { text } { xits } } \endinput %% %% End of file `sjtu-text-font-xits.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-de.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-de.def new file mode 100644 index 00000000000..15afde9008c --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-de.def @@ -0,0 +1,69 @@ +%% +%% This is file `sjtu-lang-de.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `lang,de') +%% +%% Copyright (C) SJTUG +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ + {German specific definition (SJTUTeX)} +\ProvidesExplFile{sjtu-lang-de.def} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\keys_define:nn { sjtu / private } + { + lang / de .code:n = + { + \tl_set_eq:NN \l__sjtu_lang_tl \l_keys_value_tl + \tl_set:Nn \languagename { ngerman } + \normalfont + \ctex_set:n { autoindent = 1.5 em } + } , + de .meta:n = { lang = de } , + de .groups:n = { lang } + } +\cs_set_eq:NN \__sjtu_title_case_aux_de:n \MakeUppercase +\clist_map_inline:nn + { + { keywords } { Schlüsselwörter } , + { info_sep } { \hbox { :~ } } , + { item_sep } { ,~ } + } + { \__sjtu_name_const:nnn { de } #1 } +\clist_const:Nn \c__sjtu_name_month_de_clist + { + Januar, Februar, März, April, Mai, Juni, + Juli, August, September, Oktober, November, Dezember + } +\cs_new:Npn \__sjtu_date_aux_de:nnn #1#2#3 + { + \clist_item:Nn \c__sjtu_name_month_de_clist {#2} ~ + {#3} ,~ \int_to_arabic:n {#1} + } +\cs_new:Npn \__sjtu_date_aux_de:w #1-#2-#3 \q_stop + { \__sjtu_date_aux_de:nnn {#1} {#2} {#3} } +\cs_new:Npn \__sjtu_date_aux_short_de:nn #1#2 + { + \clist_item:Nn \c__sjtu_name_month_de_clist {#2} ,~ + \int_to_arabic:n {#1} + } +\cs_new:Npn \__sjtu_date_aux_short_de:w #1-#2 \q_stop + { \__sjtu_date_aux_short_de:nn {#1} {#2} } +\endinput +%% +%% End of file `sjtu-lang-de.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-en.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-en.def index 34f319974ed..2169ab9c367 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-en.def +++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-en.def @@ -1,14 +1,15 @@ %% -%% This is file `sjtu-lang-generic-en.def', +%% This is file `sjtu-lang-en.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% sjtutex.dtx (with options: `lang,generic,en') +%% sjtutex.dtx (with options: `lang,en') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,35 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {English specific definition for generic (SJTUTeX)} -\ProvidesExplFile{sjtu-lang-generic-en.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ + {English specific definition (SJTUTeX)} +\ProvidesExplFile{sjtu-lang-en.def} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\keys_define:nn { sjtu / private } + { + lang / en .code:n = + { + \tl_set_eq:NN \l__sjtu_lang_tl \l_keys_value_tl + \tl_set:Nn \languagename { english } + \normalfont + \ctex_set:n { autoindent = 1.5 em } + } , + en .meta:n = { lang = en } , + en .groups:n = { lang } + } +\cs_set_eq:NN \__sjtu_title_case_aux_en:n \MakeUppercase +\clist_map_inline:nn + { + { keywords } { Key~words } , + { info_sep } { \hbox { :~ } } , + { item_sep } { ,~ } + } + { \__sjtu_name_const:nnn { en } #1 } +\clist_const:Nn \c__sjtu_name_month_en_clist + { + January, February, March, April, May, June, + July, August, September, October, November, December + } \cs_new:Npn \__sjtu_ordinal_en:n #1 { \int_to_arabic:n {#1} @@ -61,12 +87,6 @@ } \cs_new:Npn \__sjtu_date_aux_short_en:w #1-#2 \q_stop { \__sjtu_date_aux_short_en:nn {#1} {#2} } -\cs_new_protected:Nn \__sjtu_set_language_en: - { - \tl_set:Nn \languagename { english } - \ctex_set:n { autoindent = 1.5 em } - \normalfont - } \endinput %% -%% End of file `sjtu-lang-generic-en.def'. +%% End of file `sjtu-lang-en.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-de.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-de.def deleted file mode 100644 index 358a9630b69..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-de.def +++ /dev/null @@ -1,49 +0,0 @@ -%% -%% This is file `sjtu-lang-generic-de.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `lang,generic,de') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {German specific definition for generic (SJTUTeX)} -\ProvidesExplFile{sjtu-lang-generic-de.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\cs_new:Npn \__sjtu_date_aux_de:nnn #1#2#3 - { - \clist_item:Nn \c__sjtu_name_month_de_clist {#2} ~ - {#3} ,~ \int_to_arabic:n {#1} - } -\cs_new:Npn \__sjtu_date_aux_de:w #1-#2-#3 \q_stop - { \__sjtu_date_aux_de:nnn {#1} {#2} {#3} } -\cs_new:Npn \__sjtu_date_aux_short_de:nn #1#2 - { - \clist_item:Nn \c__sjtu_name_month_de_clist {#2} ,~ - \int_to_arabic:n {#1} - } -\cs_new:Npn \__sjtu_date_aux_short_de:w #1-#2 \q_stop - { \__sjtu_date_aux_short_de:nn {#1} {#2} } -\cs_new_protected:Nn \__sjtu_set_language_de: - { - \tl_set:Nn \languagename { ngerman } - \ctex_set:n { autoindent = 1.5 em } - \normalfont - } -\endinput -%% -%% End of file `sjtu-lang-generic-de.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-ja.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-ja.def index 57ed7bb6d1c..b6bd00d5121 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-ja.def +++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-ja.def @@ -1,14 +1,15 @@ %% -%% This is file `sjtu-lang-generic-ja.def', +%% This is file `sjtu-lang-ja.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% sjtutex.dtx (with options: `lang,generic,ja') +%% sjtutex.dtx (with options: `lang,ja') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,44 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Japanese specific definition for generic (SJTUTeX)} -\ProvidesExplFile{sjtu-lang-generic-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ + {Japanese specific definition (SJTUTeX)} +\ProvidesExplFile{sjtu-lang-ja.def} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\cs_new_protected:Nn \__sjtu_set_cjk_default_ja: + { + \tl_set:Nn \CJKrmdefault { jamin } + \tl_set:Nn \CJKsfdefault { jagoth } + \tl_set:Nn \CJKttdefault { jagoth } + } +\keys_define:nn { sjtu / private } + { + lang / ja .code:n = + { + \tl_set_eq:NN \l__sjtu_lang_tl \l_keys_value_tl + \tl_set:Nn \languagename { japanese } + \__sjtu_set_cjk_default_ja: + \normalfont + \ctex_set:n { autoindent = 1 } + } , + ja .meta:n = { lang = ja } , + ja .groups:n = { lang } + } +\cs_set_eq:NN \__sjtu_title_case_aux_ja:n \use:n +\clist_map_inline:nn + { + { keywords } { キーワード } , + { info_sep } { : \null } , + { item_sep } { \quad } + } + { \__sjtu_name_const:nnn { ja } #1 } +\clist_map_inline:nn + { + { year } { 年 } , + { month } { 月 } , + { day } { 日 } + } + { \__sjtu_name_const:nnn { ja } #1 } \cs_new:Npn \__sjtu_date_aux_ja:nnn #1#2#3 { \int_to_arabic:n {#1} ~ { \exp_not:V \c__sjtu_name_year_ja_tl } ~ @@ -39,19 +74,6 @@ } \cs_new:Npn \__sjtu_date_aux_short_ja:w #1-#2 \q_stop { \__sjtu_date_aux_short_ja:nn {#1} {#2} } -\cs_new:Nn \__sjtu_set_cjk_default_ja: - { - \tl_set:Nn \CJKrmdefault { jamin } - \tl_set:Nn \CJKsfdefault { jagoth } - \tl_set:Nn \CJKttdefault { jagoth } - } -\cs_new_protected:Nn \__sjtu_set_language_ja: - { - \tl_set:Nn \languagename { japanese } - \ctex_set:n { autoindent = 1 } - \__sjtu_set_cjk_default_ja: - \normalfont - } \endinput %% -%% End of file `sjtu-lang-generic-ja.def'. +%% End of file `sjtu-lang-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-de.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-de.def deleted file mode 100644 index 9346d596523..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-de.def +++ /dev/null @@ -1,116 +0,0 @@ -%% -%% This is file `sjtu-lang-thesis-de.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `lang,thesis,de') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {German specific definition for thesis (SJTUTeX)} -\ProvidesExplFile{sjtu-lang-thesis-de.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_info_keys_define:n { de } -\keys_define:nn { sjtu / info / de } - { - subject .initial:x = - { - Eine~ Dissertation~ Eingereicht~ an \exp_not:N \\ - der~ { \exp_not:V \c__sjtu_name_univ_de_tl }~ für~ - { \exp_not:V \c__sjtu_name_degree_level_de_tl } titel - } - } -\cs_new:Npn \__sjtu_date_aux_de:nnn #1#2#3 - { - \clist_item:Nn \c__sjtu_name_month_de_clist {#2} ~ - {#3} ,~ \int_to_arabic:n {#1} - } -\cs_new:Npn \__sjtu_date_aux_de:w #1-#2-#3 \q_stop - { \__sjtu_date_aux_de:nnn {#1} {#2} {#3} } -\cs_new:Npn \__sjtu_date_aux_short_de:nn #1#2 - { - \clist_item:Nn \c__sjtu_name_month_de_clist {#2} ,~ - \int_to_arabic:n {#1} - } -\cs_new:Npn \__sjtu_date_aux_short_de:w #1-#2 \q_stop - { \__sjtu_date_aux_short_de:nn {#1} {#2} } -\cs_new_protected:Nn \__sjtu_set_language_de: - { - \tl_set:Nn \languagename { ngerman } - \ctex_set:n { autoindent = 1.5 em } - \normalfont - } -\cs_new:Npn \ps@SJTU@fund@de - { - \ps@empty - \cs_set:Npn \@oddfoot - { - \minipage [ t ] { \textwidth } - \centering \zihao { - 5 } - \clist_use:Nn \l__sjtu_info_fund_de_clist { \par } - \endminipage - } - \cs_set_eq:NN \@evenfoot \@oddfoot - } -\clist_map_inline:nn - { - { subject } - { - format = \zihao { 4 } \setbaselineskip { 24 bp } \bfseries , - content = \l__sjtu_info_subject_de_tl , - bottom-skip = \c_zero_dim plus 1 fill - }, - { title } - { - format = \zihao { -2 } \setbaselineskip { 30 bp } \bfseries , - content = \MakeUppercase \l__sjtu_info_display_title_de_tl , - bottom-skip = \c_zero_dim plus 1 fill - }, - { info } - { - format = \zihao { 3 } \setbaselineskip { 30 bp } \bfseries , - content = - { - \__sjtu_title_page_info_i:nxx { de } - { - r @ { \exp_not:V \c__sjtu_name_info_sep_de_tl } - > { \exp_not:N \setbaselineskip { 22.5 bp } \exp_not:N \normalfont } l - } - { author, \l__sjtu_info_supervisors_clist } - } , - bottom-skip = 30 bp plus 1 fill - }, - { date } - { - format = \zihao { 3 } \setbaselineskip { 30 bp } , - content = - { \__sjtu_title_page_info_ii:n { de } } , - }, - } - { - \__sjtu_declare_component:nnn { title / de } #1 - } -\__sjtu_declare_page:nn { title / de } - { - style = SJTU@fund@de , - format = \linespread { } \__sjtu_set_language_de: , - prefix = title / de , - components = { subject, title, info, date } - } -\endinput -%% -%% End of file `sjtu-lang-thesis-de.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-en.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-en.def deleted file mode 100644 index e4559e1d98f..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-en.def +++ /dev/null @@ -1,139 +0,0 @@ -%% -%% This is file `sjtu-lang-thesis-en.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `lang,thesis,en') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {English specific definition for thesis (SJTUTeX)} -\ProvidesExplFile{sjtu-lang-thesis-en.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_info_keys_define:n { en } -\keys_define:nn { sjtu / info / en } - { - subject .initial:x = - { - A~ Dissertation~ Submitted~ to \exp_not:N \\ - { \exp_not:V \c__sjtu_name_univ_en_tl }~ for~ - the~ Degree~ of~ { \exp_not:V \c__sjtu_name_degree_level_en_tl } - } - } -\cs_new:Npn \__sjtu_ordinal_en:n #1 - { - \int_to_arabic:n {#1} - \exp_not:N \textsuperscript - { - \int_case:nnF { \int_mod:nn {#1} { 100 } } - { - { 11 } { th } - { 12 } { th } - { 13 } { th } - } - { - \int_case:nnF { \int_mod:nn {#1} { 10 } } - { - { 1 } { st } - { 2 } { nd } - { 3 } { rd } - } - { th } - } - } - } -\cs_new:Npn \__sjtu_date_aux_en:nnn #1#2#3 - { - \clist_item:Nn \c__sjtu_name_month_en_clist {#2} ~ - \__sjtu_ordinal_en:n {#3} ,~ - \int_to_arabic:n {#1} - } -\cs_new:Npn \__sjtu_date_aux_en:w #1-#2-#3 \q_stop - { \__sjtu_date_aux_en:nnn {#1} {#2} {#3} } -\cs_new:Npn \__sjtu_date_aux_short_en:nn #1#2 - { - \clist_item:Nn \c__sjtu_name_month_en_clist {#2} ,~ - \int_to_arabic:n {#1} - } -\cs_new:Npn \__sjtu_date_aux_short_en:w #1-#2 \q_stop - { \__sjtu_date_aux_short_en:nn {#1} {#2} } -\cs_new_protected:Nn \__sjtu_set_language_en: - { - \tl_set:Nn \languagename { english } - \ctex_set:n { autoindent = 1.5 em } - \normalfont - } -\cs_new:Npn \ps@SJTU@fund@en - { - \ps@empty - \cs_set:Npn \@oddfoot - { - \minipage [ t ] { \textwidth } - \centering \zihao { - 5 } - \clist_use:Nn \l__sjtu_info_fund_en_clist { \par } - \endminipage - } - \cs_set_eq:NN \@evenfoot \@oddfoot - } -\clist_map_inline:nn - { - { subject } - { - format = \zihao { 4 } \setbaselineskip { 24 bp } \bfseries , - content = \l__sjtu_info_subject_en_tl , - bottom-skip = \c_zero_dim plus 1 fill - }, - { title } - { - format = \zihao { -2 } \setbaselineskip { 30 bp } \bfseries , - content = \MakeUppercase \l__sjtu_info_display_title_en_tl , - bottom-skip = \c_zero_dim plus 1 fill - }, - { info } - { - format = \zihao { 3 } \setbaselineskip { 30 bp } \bfseries , - content = - { - \__sjtu_title_page_info_i:nxx { en } - { - r @ { \exp_not:V \c__sjtu_name_info_sep_en_tl } - > { \exp_not:N \setbaselineskip { 22.5 bp } \exp_not:N \normalfont } l - } - { author, \l__sjtu_info_supervisors_clist } - } , - bottom-skip = 30 bp plus 1 fill - }, - { date } - { - format = \zihao { 3 } \setbaselineskip { 30 bp } , - content = - { \__sjtu_title_page_info_ii:n { en } } , - }, - } - { - \__sjtu_declare_component:nnn { title / en } #1 - } -\__sjtu_declare_page:nn { title / en } - { - style = SJTU@fund@en , - format = \linespread { } \__sjtu_set_language_en: , - prefix = title / en , - components = { subject, title, info, date } - } -\endinput -%% -%% End of file `sjtu-lang-thesis-en.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-ja.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-ja.def deleted file mode 100644 index 6acddb394ad..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-ja.def +++ /dev/null @@ -1,124 +0,0 @@ -%% -%% This is file `sjtu-lang-thesis-ja.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `lang,thesis,ja') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Japanese specific definition for thesis (SJTUTeX)} -\ProvidesExplFile{sjtu-lang-thesis-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_info_keys_define:n { ja } -\keys_define:nn { sjtu / info / ja } - { - subject .initial:x = - { - \exp_not:V \c__sjtu_name_univ_ja_tl - \exp_not:V \c__sjtu_name_degree_level_ja_tl - \exp_not:V \c__sjtu_name_thesis_ja_tl - } - } -\cs_new:Npn \__sjtu_date_aux_ja:nnn #1#2#3 - { - \int_to_arabic:n {#1} ~ { \exp_not:V \c__sjtu_name_year_ja_tl } ~ - \int_to_arabic:n {#2} ~ { \exp_not:V \c__sjtu_name_month_ja_tl } ~ - \int_to_arabic:n {#3} ~ { \exp_not:V \c__sjtu_name_day_ja_tl } - } -\cs_new:Npn \__sjtu_date_aux_ja:w #1-#2-#3 \q_stop - { \__sjtu_date_aux_ja:nnn {#1} {#2} {#3} } -\cs_new:Npn \__sjtu_date_aux_short_ja:nn #1#2 - { - \int_to_arabic:n {#1} ~ { \exp_not:V \c__sjtu_name_year_ja_tl } ~ - \int_to_arabic:n {#2} ~ { \exp_not:V \c__sjtu_name_month_ja_tl } - } -\cs_new:Npn \__sjtu_date_aux_short_ja:w #1-#2 \q_stop - { \__sjtu_date_aux_short_ja:nn {#1} {#2} } -\cs_new:Nn \__sjtu_set_cjk_default_ja: - { - \tl_set:Nn \CJKrmdefault { jamin } - \tl_set:Nn \CJKsfdefault { jagoth } - \tl_set:Nn \CJKttdefault { jagoth } - } -\cs_new_protected:Nn \__sjtu_set_language_ja: - { - \tl_set:Nn \languagename { japanese } - \ctex_set:n { autoindent = 1 } - \__sjtu_set_cjk_default_ja: - \normalfont - } -\cs_new:Npn \ps@SJTU@fund@ja - { - \ps@empty - \cs_set:Npn \@oddfoot - { - \minipage [ t ] { \textwidth } - \centering \zihao { - 5 } - \clist_use:Nn \l__sjtu_info_fund_ja_clist { \par } - \endminipage - } - \cs_set_eq:NN \@evenfoot \@oddfoot - } -\clist_map_inline:nn - { - { subject } - { - format = \zihao { 4 } \setbaselineskip { 24 bp } \bfseries , - content = \l__sjtu_info_subject_ja_tl , - bottom-skip = \c_zero_dim plus 1 fill - }, - { title } - { - format = \zihao { -2 } \setbaselineskip { 30 bp } \bfseries , - content = \l__sjtu_info_display_title_ja_tl , - bottom-skip = \c_zero_dim plus 1 fill - }, - { info } - { - format = \zihao { 3 } \setbaselineskip { 30 bp } \bfseries , - content = - { - \__sjtu_title_page_info_i:nxx { ja } - { - r @ { \exp_not:V \c__sjtu_name_info_sep_ja_tl } - > { \exp_not:N \setbaselineskip { 22.5 bp } \exp_not:N \normalfont } l - } - { author, \l__sjtu_info_supervisors_clist } - } , - bottom-skip = 30 bp plus 1 fill - }, - { date } - { - format = \zihao { 3 } \setbaselineskip { 30 bp } , - content = - { \__sjtu_title_page_info_ii:n { ja } } , - }, - } - { - \__sjtu_declare_component:nnn { title / ja } #1 - } -\__sjtu_declare_page:nn { title / ja } - { - style = SJTU@fund@ja , - format = \linespread { } \__sjtu_set_language_ja: , - prefix = title / ja , - components = { subject, title, info, date } - } -\endinput -%% -%% End of file `sjtu-lang-thesis-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-zh.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-zh.def deleted file mode 100644 index 92bac2ce28b..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-zh.def +++ /dev/null @@ -1,142 +0,0 @@ -%% -%% This is file `sjtu-lang-thesis-zh.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `lang,thesis,zh') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Chinese specific definition for thesis (SJTUTeX)} -\ProvidesExplFile{sjtu-lang-thesis-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\__sjtu_info_keys_define:n { zh } -\keys_define:nn { sjtu / info / zh } - { - subject .initial:x = - { - \exp_not:V \c__sjtu_name_univ_zh_tl - \exp_not:V \c__sjtu_name_degree_level_zh_tl - \exp_not:V \c__sjtu_name_thesis_zh_tl - } - } -\cs_new:Npn \__sjtu_date_aux_zh:nnn #1#2#3 - { - \int_to_arabic:n {#1} ~ { \exp_not:V \c__sjtu_name_year_zh_tl } ~ - \int_to_arabic:n {#2} ~ { \exp_not:V \c__sjtu_name_month_zh_tl } ~ - \int_to_arabic:n {#3} ~ { \exp_not:V \c__sjtu_name_day_zh_tl } - } -\cs_new:Npn \__sjtu_date_aux_zh:w #1-#2-#3 \q_stop - { \__sjtu_date_aux_zh:nnn {#1} {#2} {#3} } -\cs_new:Npn \__sjtu_date_aux_short_zh:nn #1#2 - { - \int_to_arabic:n {#1} ~ { \exp_not:V \c__sjtu_name_year_zh_tl } ~ - \int_to_arabic:n {#2} ~ { \exp_not:V \c__sjtu_name_month_zh_tl } - } -\cs_new:Npn \__sjtu_date_aux_short_zh:w #1-#2 \q_stop - { \__sjtu_date_aux_short_zh:nn {#1} {#2} } -\cs_new:Nn \__sjtu_set_cjk_default_zh: - { - \tl_set:Nn \CJKrmdefault { zhsong } - \tl_set:Nn \CJKsfdefault { zhhei } - \tl_set:Nn \CJKttdefault { zhfs } - } -\cs_new_protected:Nn \__sjtu_set_language_zh: - { - \tl_set:Nn \languagename { chinese } - \ctex_set:n { autoindent = true } - \__sjtu_set_cjk_default_zh: - \normalfont - } -\cs_new:Npn \ps@SJTU@fund@zh - { - \ps@empty - \cs_set:Npn \@oddfoot - { - \minipage [ t ] { \textwidth } - \centering \zihao { - 5 } - \clist_use:Nn \l__sjtu_info_fund_zh_clist { \par } - \endminipage - } - \cs_set_eq:NN \@evenfoot \@oddfoot - } -\clist_map_inline:nn - { - { logo } - { - content = - { - \includegraphics [ width = 3 cm ] - { sjtu-vi-badge-red.pdf } - } - }, - { subject } - { - format = \zihao { -2 } \setbaselineskip { 30 bp } , - content = \l__sjtu_info_subject_zh_tl , - bottom-skip = \c_zero_dim plus 1 fill - }, - { title } - { - format = \zihao { 2 } \setbaselineskip { 36 bp } \bfseries , - content = \l__sjtu_info_display_title_zh_tl , - bottom-skip = 30 bp plus 1 fill - }, - { info } - { - format = \zihao { 4 } \setbaselineskip { 30 bp } \heiti , - content = - { - \__sjtu_title_page_info_i:nxx { zh } - { - \exp_not:N \SJTU@CT@D { 5 em } - @ { \exp_not:V \c__sjtu_name_info_sep_zh_tl } - > { \exp_not:N \setbaselineskip { 22.5 bp } \exp_not:N \normalfont } l - } - { - author, - id, - \l__sjtu_info_supervisors_clist , - department, - major, - \int_compare:nNnF { \g__sjtu_thesis_type_int } = { 1 } - { degree } - } - } , - bottom-skip = 30 bp - }, - { date } - { - format = \zihao { 4 } \setbaselineskip { 30 bp } \bfseries , - content = \l__sjtu_info_date_zh_tl , - } - } - { - \__sjtu_declare_component:nnn { title / zh } #1 - } -\__sjtu_declare_page:nn { title / zh } - { - bookmark = true , - bookmark-text = \c__sjtu_name_title_page_tl , - style = SJTU@fund@zh , - format = \linespread { } \__sjtu_set_language_zh: , - prefix = title / zh , - components = { logo, subject, title, info, date } - } -\endinput -%% -%% End of file `sjtu-lang-thesis-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-zh.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-zh.def index cd65215797c..0ff2c3cf2f4 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-zh.def +++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-zh.def @@ -1,14 +1,15 @@ %% -%% This is file `sjtu-lang-generic-zh.def', +%% This is file `sjtu-lang-zh.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% sjtutex.dtx (with options: `lang,generic,zh') +%% sjtutex.dtx (with options: `lang,zh') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,44 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Chinese specific definition for generic (SJTUTeX)} -\ProvidesExplFile{sjtu-lang-generic-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ + {Chinese specific definition (SJTUTeX)} +\ProvidesExplFile{sjtu-lang-zh.def} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\cs_new_protected:Nn \__sjtu_set_cjk_default_zh: + { + \tl_set:Nn \CJKrmdefault { zhsong } + \tl_set:Nn \CJKsfdefault { zhhei } + \tl_set:Nn \CJKttdefault { zhfs } + } +\keys_define:nn { sjtu / private } + { + lang / zh .code:n = + { + \tl_set_eq:NN \l__sjtu_lang_tl \l_keys_value_tl + \tl_set:Nn \languagename { chinese } + \__sjtu_set_cjk_default_zh: + \normalfont + \ctex_set:n { autoindent = true } + } , + zh .meta:n = { lang = zh } , + zh .groups:n = { lang } + } +\cs_set_eq:NN \__sjtu_title_case_aux_zh:n \use:n +\clist_map_inline:nn + { + { keywords } { 关键词 } , + { info_sep } { : \null } , + { item_sep } { , } + } + { \__sjtu_name_const:nnn { zh } #1 } +\clist_map_inline:nn + { + { year } { 年 } , + { month } { 月 } , + { day } { 日 } + } + { \__sjtu_name_const:nnn { zh } #1 } \cs_new:Npn \__sjtu_date_aux_zh:nnn #1#2#3 { \int_to_arabic:n {#1} ~ { \exp_not:V \c__sjtu_name_year_zh_tl } ~ @@ -39,19 +74,6 @@ } \cs_new:Npn \__sjtu_date_aux_short_zh:w #1-#2 \q_stop { \__sjtu_date_aux_short_zh:nn {#1} {#2} } -\cs_new:Nn \__sjtu_set_cjk_default_zh: - { - \tl_set:Nn \CJKrmdefault { zhsong } - \tl_set:Nn \CJKsfdefault { zhhei } - \tl_set:Nn \CJKttdefault { zhfs } - } -\cs_new_protected:Nn \__sjtu_set_language_zh: - { - \tl_set:Nn \languagename { chinese } - \ctex_set:n { autoindent = true } - \__sjtu_set_cjk_default_zh: - \normalfont - } \endinput %% -%% End of file `sjtu-lang-generic-zh.def'. +%% End of file `sjtu-lang-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-de.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-de.def deleted file mode 100644 index d513de1edfc..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-de.def +++ /dev/null @@ -1,41 +0,0 @@ -%% -%% This is file `sjtu-name-generic-de.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `name,generic,de') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {German name config for generic (SJTUTeX)} -\ProvidesExplFile{sjtu-name-generic-de.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\clist_const:Nn \c__sjtu_name_month_de_clist - { - Januar, Februar, März, April, Mai, Juni, - Juli, August, September, Oktober, November, Dezember - } -\clist_map_inline:nn - { - { keywords } { Schlüsselwörter } , - { info_sep } { :~ } , - { item_sep } { ,~ } - } - { \__sjtu_define_name:nn #1 } -\endinput -%% -%% End of file `sjtu-name-generic-de.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-en.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-en.def deleted file mode 100644 index ad7ce493862..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-en.def +++ /dev/null @@ -1,41 +0,0 @@ -%% -%% This is file `sjtu-name-generic-en.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `name,generic,en') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {English name config for generic (SJTUTeX)} -\ProvidesExplFile{sjtu-name-generic-en.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\clist_const:Nn \c__sjtu_name_month_en_clist - { - January, February, March, April, May, June, - July, August, September, October, November, December - } -\clist_map_inline:nn - { - { keywords } { Key~words } , - { info_sep } { :~ } , - { item_sep } { ,~ } - } - { \__sjtu_define_name:nn #1 } -\endinput -%% -%% End of file `sjtu-name-generic-en.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-ja.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-ja.def deleted file mode 100644 index b8c553cafac..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-ja.def +++ /dev/null @@ -1,43 +0,0 @@ -%% -%% This is file `sjtu-name-generic-ja.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `name,generic,ja') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Japanese name config for generic (SJTUTeX)} -\ProvidesExplFile{sjtu-name-generic-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\clist_map_inline:nn - { - { year } { 年 } , - { month } { 月 } , - { day } { 日 } - } - { \__sjtu_define_name:nnn { ja } #1 } -\clist_map_inline:nn - { - { keywords } { キーワード } , - { info_sep } { : \null } , - { item_sep } { \quad } - } - { \__sjtu_define_name:nn #1 } -\endinput -%% -%% End of file `sjtu-name-generic-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-zh.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-zh.def deleted file mode 100644 index 550487e60bb..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-zh.def +++ /dev/null @@ -1,43 +0,0 @@ -%% -%% This is file `sjtu-name-generic-zh.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `name,generic,zh') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Chinese name config for generic (SJTUTeX)} -\ProvidesExplFile{sjtu-name-generic-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\clist_map_inline:nn - { - { year } { 年 } , - { month } { 月 } , - { day } { 日 } - } - { \__sjtu_define_name:nnn { zh } #1 } -\clist_map_inline:nn - { - { keywords } { 关键词 } , - { info_sep } { : \null } , - { item_sep } { , } - } - { \__sjtu_define_name:nn #1 } -\endinput -%% -%% End of file `sjtu-name-generic-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-de.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-de.def deleted file mode 100644 index 7f903e28ce6..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-de.def +++ /dev/null @@ -1,53 +0,0 @@ -%% -%% This is file `sjtu-name-thesis-de.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `name,thesis,de') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {German name config for thesis (SJTUTeX)} -\ProvidesExplFile{sjtu-name-thesis-de.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\clist_const:Nn \c__sjtu_name_month_de_clist - { - Januar, Februar, März, April, Mai, Juni, - Juli, August, September, Oktober, November, Dezember - } -\__sjtu_define_name_from_clist:nnnn { de } - { degree_level } { \g__sjtu_thesis_type_int } - { Bachelor, Master, Doktor } -\clist_map_inline:nn - { - { univ } { Shanghai~ Jiao~ Tong~ Universität } , - { address } { Shanghai,~ VR~ China } , - { author } { Autor/in } , - { supervisor } { Betreuer/in } , - { assoc_supervisor } { Zweitbetreuer/in } , - { co_supervisor } { Co-Betreuer/in } , - { title_page } { Titelblatt } , - { declaration } { Eidesstattliche~ Erklärung } , - { abstract } { Abstrakt } , - { keywords } { Schlüsselwörter } , - { info_sep } { :~ } , - { item_sep } { ,~ } - } - { \__sjtu_define_name:nnn { de } #1 } -\endinput -%% -%% End of file `sjtu-name-thesis-de.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-en.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-en.def deleted file mode 100644 index a07154ca199..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-en.def +++ /dev/null @@ -1,53 +0,0 @@ -%% -%% This is file `sjtu-name-thesis-en.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `name,thesis,en') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {English name config for thesis (SJTUTeX)} -\ProvidesExplFile{sjtu-name-thesis-en.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\clist_const:Nn \c__sjtu_name_month_en_clist - { - January, February, March, April, May, June, - July, August, September, October, November, December - } -\__sjtu_define_name_from_clist:nnnn { en } - { degree_level } { \g__sjtu_thesis_type_int } - { Bachelor, Master, Doctor } -\clist_map_inline:nn - { - { univ } { Shanghai~ Jiao~ Tong~ University } , - { address } { Shanghai,~ P.R.~ China } , - { author } { Author } , - { supervisor } { Supervisor } , - { assoc_supervisor } { Assoc.\ Supervisor } , - { co_supervisor } { Co-supervisor } , - { title_page } { Title~ Page } , - { declaration } { Statutory~ Declaration } , - { abstract } { Abstract } , - { keywords } { Key~words } , - { info_sep } { :~ } , - { item_sep } { ,~ } - } - { \__sjtu_define_name:nnn { en } #1 } -\endinput -%% -%% End of file `sjtu-name-thesis-en.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-ja.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-ja.def deleted file mode 100644 index d728a7a497f..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-ja.def +++ /dev/null @@ -1,56 +0,0 @@ -%% -%% This is file `sjtu-name-thesis-ja.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `name,thesis,ja') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Japanese name config for thesis (SJTUTeX)} -\ProvidesExplFile{sjtu-name-thesis-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\clist_map_inline:nn - { - { year } { 年 } , - { month } { 月 } , - { day } { 日 } - } - { \__sjtu_define_name:nnn { ja } #1 } -\__sjtu_define_name_from_clist:nnnn { ja } - { degree_level } { \g__sjtu_thesis_type_int } - { 学士, 修士, 博士 } -\clist_map_inline:nn - { - { univ } { 上海交通大学 } , - { address } { 中国・上海 } , - { author } { 氏名 } , - { supervisor } { 指導教員 } , - { assoc_supervisor } { 副指導教員 } , - { co_supervisor } { 共同指導 } , - { thesis } { 学位請求論文 } , - { title_page } { 標題紙 } , - { declaration } { 誓約書・公表許諾書 } , - { abstract } { 要 \protect \quad 旨 } , - { keywords } { キーワード } , - { info_sep } { : \null } , - { item_sep } { \quad } - } - { \__sjtu_define_name:nnn { ja } #1 } -\endinput -%% -%% End of file `sjtu-name-thesis-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-zh.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-zh.def deleted file mode 100644 index a0f04fe59eb..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-zh.def +++ /dev/null @@ -1,100 +0,0 @@ -%% -%% This is file `sjtu-name-thesis-zh.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtutex.dtx (with options: `name,thesis,zh') -%% -%% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. -%% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ - {Chinese name config for thesis (SJTUTeX)} -\ProvidesExplFile{sjtu-name-thesis-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\clist_map_inline:nn - { - { year } { 年 } , - { month } { 月 } , - { day } { 日 } - } - { \__sjtu_define_name:nnn { zh } #1 } -\__sjtu_define_symbol:nn { white_square } { "25A1 } -\__sjtu_define_name_from_clist:nnnn { zh } - { degree_level } { \g__sjtu_thesis_type_int } - { 学士, 硕士, 博士 } -\clist_map_inline:nn - { - { univ } { 上海交通大学 } , - { author } { 姓名 } , - { id } { 学号 } , - { supervisor } { 导师 } , - { assoc_supervisor } { 副导师 } , - { department } { 院系 } , - { co_supervisor } { 联合导师 } , - { major } { 学科 / 专业 } , - { degree } { 申请学位 } , - { thesis } { 学位论文 } , - { title_page } { 题名页 } , - { declaration } { 原创性声明及使用授权书 } , - { orig_decl } { 原创性声明 } , - { auth_decl } { 使用授权书 } , - { decl_author } { 学位论文作者 } , - { decl_supervisor } { 指导教师 } , - { abstract } { 摘 \protect \quad 要 } , - { keywords } { 关键词 } , - { info_sep } { : \null } , - { item_sep } { , } - } - { \__sjtu_define_name:nnn { zh } #1 } -\tl_const:Nn \c__sjtu_orig_decl_text_zh_tl - { - 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工 - 作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人 - 或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集 - 体,均已在文中以明确方式标明。本人完全知晓本声明的法律后果由本人承 - 担。 - } -\tl_const:Nn \c__sjtu_auth_decl_text_zh_tl - { - 本人同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许 - 论文被查阅和借阅。 \par - \vskip 6 bp - \noindent - 本学位论文属于: \par - { \c__sjtu_symbol_white_square_tl } \textbf { 公开论文 } \par - { \c__sjtu_symbol_white_square_tl } \textbf { 内部论文 }, - 保密 { \c__sjtu_symbol_white_square_tl }~ 1~ 年 / - { \c__sjtu_symbol_white_square_tl }~ 2~ 年 / - { \c__sjtu_symbol_white_square_tl }~ 3~ 年, - 过保密期后适用本授权书。 \par - { \c__sjtu_symbol_white_square_tl } \textbf { 秘密论文 }, - 保密 \underline { \hspace { 2 em } } 年(不超过~ 10~ 年), - 过保密期后适用本授权书。 \par - { \c__sjtu_symbol_white_square_tl } \textbf { 机密论文 }, - 保密 \underline { \hspace { 2 em } } 年(不超过~ 20~ 年), - 过保密期后适用本授权书。 \par - \hspace { 6 em }(请在以上方框内选择打“ \ensuremath { \checkmark } ”) - } -\tl_const:Nn \c__sjtu_signature_text_zh_tl - { - 签名: \\ - 日期: \hspace { \stretch { 3 } } 年 - \hspace { \stretch { 2 } } 月 - \hspace { \stretch { 2 } } 日 - } -\endinput -%% -%% End of file `sjtu-name-thesis-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-de.def b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-de.def index ad6948cbca2..acde1184f4a 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-de.def +++ b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-de.def @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `scheme,de') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,16 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {German scheme (SJTUTeX)} \ProvidesExplFile{sjtu-scheme-de.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\ctex_if_autoindent_touched:F + { \ctex_set:n { autoindent = 1.5 em } } +\ctex_patch_cmd:Nnn \quotation { 1.5em } { \parindent } +\keys_set:nn { sjtu / style } + { fnmark-style = plain } +\tl_set:Nn \languagename { ngerman } \keys_set_known:nn { sjtu / name } { contents = { Inhaltsverzeichnis } , @@ -49,12 +56,6 @@ digest = { Kurzfassung } , achv = { Forschungsleistungen } } -\ctex_if_autoindent_touched:F - { \ctex_set:n { autoindent = 1.5 em } } -\ctex_patch_cmd:Nnn \quotation { 1.5em } { \parindent } -\keys_set:nn { sjtu / style } - { fnmark-style = plain } -\tl_set:Nn \languagename { ngerman } \clist_map_inline:nn { { assumption } { Annahme } , @@ -71,7 +72,7 @@ { solution } { Lösung } , { theorem } { Theorem } } - { \__sjtu_define_name:nn #1 } + { \__sjtu_name_const:nnn { de } #1 } \endinput %% %% End of file `sjtu-scheme-de.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-en.def b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-en.def index 2cef74deb42..d1ea25b0617 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-en.def +++ b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-en.def @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `scheme,en') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,10 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {English scheme (SJTUTeX)} \ProvidesExplFile{sjtu-scheme-en.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} + {\ExplFileDate}{2.2}{\ExplFileDescription} \ctex_if_autoindent_touched:F { \ctex_set:n { autoindent = 1.5 em } } \ctex_patch_cmd:Nnn \quotation { 1.5em } { \parindent } @@ -46,7 +47,7 @@ { solution } { Solution } , { theorem } { Theorem } } - { \__sjtu_define_name:nn #1 } + { \__sjtu_name_const:nnn { en } #1 } \endinput %% %% End of file `sjtu-scheme-en.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-ja.def b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-ja.def index b04ecf5b089..c1703eb6b67 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-ja.def +++ b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-ja.def @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `scheme,ja') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,20 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Japanese scheme (SJTUTeX)} \ProvidesExplFile{sjtu-scheme-ja.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\keys_set_known:nn { ctex / chapter } + { name = { 第 \space , \space 章 } } +\ctex_if_autoindent_touched:F + { \ctex_set:n { autoindent = 1 } } +\ctex_patch_cmd:Nnn \verse { -1.5em } { -2 \ccwd } +\ctex_patch_cmd:Nnn \verse { 1.5em } { 2 \ccwd } +\ctex_patch_cmd:Nnn \quotation { 1.5em } { \parindent } +\keys_set:nn { sjtu / style } + { fnmark-style = circled } +\tl_set:Nn \languagename { japanese } \keys_set_known:nn { sjtu / name } { contents = { 目 \protect \quad 次 } , @@ -47,16 +58,6 @@ digest = { 要 \protect \quad 約 } , achv = { 研究業績書 } } -\keys_set_known:nn { ctex / chapter } - { name = { 第 \space , \space 章 } } -\ctex_if_autoindent_touched:F - { \ctex_set:n { autoindent = 1 } } -\ctex_patch_cmd:Nnn \verse { -1.5em } { -2 \ccwd } -\ctex_patch_cmd:Nnn \verse { 1.5em } { 2 \ccwd } -\ctex_patch_cmd:Nnn \quotation { 1.5em } { \parindent } -\keys_set:nn { sjtu / style } - { fnmark-style = circled } -\tl_set:Nn \languagename { japanese } \clist_map_inline:nn { { assumption } { 仮定 } , @@ -73,7 +74,7 @@ { solution } { 解法 } , { theorem } { 定理 } } - { \__sjtu_define_name:nn #1 } + { \__sjtu_name_const:nnn { ja } #1 } \endinput %% %% End of file `sjtu-scheme-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-zh.def b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-zh.def index 48795ade587..ee6353845ba 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-zh.def +++ b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-zh.def @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `scheme,zh') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,10 +21,20 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Chinese scheme (SJTUTeX)} \ProvidesExplFile{sjtu-scheme-zh.def} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\keys_set_known:nn { ctex / chapter } + { name = { 第 \space , \space 章 } } +\ctex_if_autoindent_touched:F + { \ctex_set:n { autoindent = true } } +\ctex_patch_cmd:Nnn \verse { -1.5em } { -2 \ccwd } +\ctex_patch_cmd:Nnn \verse { 1.5em } { 2 \ccwd } +\ctex_patch_cmd:Nnn \quotation { 1.5em } { \parindent } +\keys_set:nn { sjtu / style } + { fnmark-style = circled } +\tl_set:Nn \languagename { chinese } \keys_set_known:nn { sjtu / name } { contents = { 目 \protect \quad 录 } , @@ -47,16 +58,6 @@ digest = { 大摘要 } , achv = { 学术论文和科研成果目录 } } -\keys_set_known:nn { ctex / chapter } - { name = { 第 \space , \space 章 } } -\ctex_if_autoindent_touched:F - { \ctex_set:n { autoindent = true } } -\ctex_patch_cmd:Nnn \verse { -1.5em } { -2 \ccwd } -\ctex_patch_cmd:Nnn \verse { 1.5em } { 2 \ccwd } -\ctex_patch_cmd:Nnn \quotation { 1.5em } { \parindent } -\keys_set:nn { sjtu / style } - { fnmark-style = circled } -\tl_set:Nn \languagename { chinese } \clist_map_inline:nn { { assumption } { 假设 } , @@ -73,7 +74,7 @@ { solution } { 解 } , { theorem } { 定理 } } - { \__sjtu_define_name:nn #1 } + { \__sjtu_name_const:nnn { zh } #1 } \endinput %% %% End of file `sjtu-scheme-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/sjtuarticle.cls b/Master/texmf-dist/tex/latex/sjtutex/sjtuarticle.cls index 0abc90423d5..ea7eadce674 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/sjtuarticle.cls +++ b/Master/texmf-dist/tex/latex/sjtutex/sjtuarticle.cls @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `class,article') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,30 +21,75 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\NeedsTeXFormat{LaTeX2e}[2024-06-01] \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} -\IfFormatAtLeastTF{2020/10/01}{} +\IfFormatAtLeastTF{2024-06-01}{} {\PackageError{sjtutex} {Your LaTeX format is outdated!\MessageBreak\MessageBreak - Release `2020/10/01' or newer is required to\MessageBreak + Release '2024-06-01' or newer is required to\MessageBreak compile this document.\MessageBreak\MessageBreak Please update your TeX distribution}{}} -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Article document class for Shanghai Jiao Tong University (SJTUTeX)} \ProvidesExplClass{sjtuarticle} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\dim_new:N \l__sjtu_tmp_dim -\skip_new:N \l__sjtu_tmp_skip -\box_new:N \l__sjtu_tmp_box + {\ExplFileDate}{2.2}{\ExplFileDescription} +\msg_new:nnn { sjtutex } { unsupported-engine } + { + The~sjtutex~classes~does~NOT~support~'#1'~engine. \\\\ + Please~set~your~typesetting~program~to~either~ + 'xelatex'~or~'lualatex'. + } +\bool_lazy_any:nF + { + { \sys_if_engine_xetex_p: } + { \sys_if_engine_luatex_p: } + { \sys_if_engine_pdftex_p: } + } + { \msg_fatal:nnV { sjtutex } { unsupported-engine } \c_sys_engine_str } +\tl_new:N \l__sjtu_tmp_tl +\clist_new:N \l__sjtu_tmp_clist +\cs_generate_variant:Nn \clist_use:Nn { Nv, cv } +\exp_args_generate:n { Nnv } +\cs_generate_variant:Nn \exp_last_unbraced:Ne { ce } +\cs_new_protected:Npn \__sjtu_conditional_const:nn #1#2 + { + \bool_if:nTF {#2} + { + \cs_new_eq:cN { __sjtu_if_ #1 :T } \use:n + \cs_new_eq:cN { __sjtu_if_ #1 :F } \use_none:n + \cs_new_eq:cN { __sjtu_if_ #1 :TF } \use_i:nn + \cs_new_eq:cN { __sjtu_if_ #1 _p: } \c_true_bool + } + { + \cs_new_eq:cN { __sjtu_if_ #1 :T } \use_none:n + \cs_new_eq:cN { __sjtu_if_ #1 :F } \use:n + \cs_new_eq:cN { __sjtu_if_ #1 :TF } \use_ii:nn + \cs_new_eq:cN { __sjtu_if_ #1 _p: } \c_false_bool + } + } +\__sjtu_conditional_const:nn { engine_opentype } + { + \bool_lazy_or_p:nn + { \sys_if_engine_xetex_p: } + { \sys_if_engine_luatex_p: } + } +\msg_new:nnn { sjtutex } { package-disabled } + { The~loading~of~package~'#1'~is~disabled. } +\cs_new_protected:Npn \__sjtu_disable_package_load:n #1 + { + \disable@package@load {#1} + { \msg_warning:nnn { sjtutex } { package-disabled } {#1} } + } +\cs_new_protected:Npn \__sjtu_cs_provide_eq:NN #1#2 + { \cs_if_exist:NF #1 { \cs_set_eq:NN #1 #2 } } +\cs_generate_variant:Nn \__sjtu_cs_provide_eq:NN { cc } +\cs_new_protected:Npn \__sjtu_name_set:nnn #1#2#3 + { \tl_set:cn { l__sjtu_name_ #2 _ #1 _tl } {#3} } +\cs_new_protected:Npn \__sjtu_name_const:nnn #1#2#3 + { \tl_const:cn { c__sjtu_name_ #2 _ #1 _tl } {#3} } \tl_new:N \g__sjtu_lang_tl -\tl_const:Nn \c__sjtu_lang_de_tl { de } -\tl_const:Nn \c__sjtu_lang_ja_tl { ja } -\tl_new:N \g__sjtu_zihao_tl -\int_new:N \g__sjtu_font_size_int -\dim_new:N \g__sjtu_font_size_dim \dim_new:N \g__sjtu_baseline_skip_dim \bool_new:N \g__sjtu_fixed_baselineskip_bool -\fp_new:N \g__sjtu_line_spread_fp \tl_new:N \g__sjtu_text_font_tl \tl_new:N \g__sjtu_math_font_tl \tl_new:N \g__sjtu_cjk_font_tl @@ -52,22 +98,33 @@ \bool_new:N \g__sjtu_integral_limits_bool \clist_new:N \g__sjtu_math_font_options_clist \clist_set:Nn \g__sjtu_options_to_ctex_class_clist - { a4paper, UTF8, scheme = plain, fontset = none } -\clist_new:N \g__sjtu_options_to_packages_clist -\bool_new:N \g__sjtu_twoside_bool -\bool_set_false:N \g__sjtu_twoside_bool -\bool_new:N \g__sjtu_titlepage_bool -\bool_set_false:N \g__sjtu_titlepage_bool -\bool_new:N \g__sjtu_draft_bool -\cs_new_protected:Npn \__sjtu_deprecated_option:n - { \msg_warning:nnn { sjtutex } { deprecated-option } } + { + UTF8, + linespread = 1.3, + scheme = plain, + fontset = none + } +\clist_set:Nn \g__sjtu_options_to_packages_clist + { + { no-math } { fontspec } , + { list = off } { bicaption } , + { warnings-off = + { + mathtools-overbracket, + mathtools-colon + } + } { unicode-math } , + { amsmath, thmmarks } { ntheorem } + } +\msg_new:nnn { sjtutex } { deprecated-option } + { Option~'\l_keys_key_str'~is~deprecated! \\ #1 } \cs_new_protected:Npn \__sjtu_set_deprecated_option:n #1 { - \__sjtu_deprecated_option:n { Option~ `#1'~ is~ set. } + \msg_warning:nnn { sjtutex } { deprecated-option } { Option~'#1'~is~set. } \keys_set:nn { sjtu / option } {#1} } -\msg_new:nnn { sjtutex } { deprecated-option } - { Option~ `\l_keys_key_tl'~ is~ deprecated. \\ #1 } +\msg_new:nnn { sjtutex } { unsupported-option } + { Option~'\l_keys_key_str'~is~not~supported! \\ Will~be~ignored. } \keys_define:nn { sjtu / option } { lang .choice: , @@ -78,24 +135,6 @@ \tl_gset_eq:NN \g__sjtu_lang_tl \l_keys_choice_tl } , lang .initial:n = { zh } , - zihao .choice: , - zihao .value_required:n = true , - zihao / 5 .code:n = - { - \tl_gset:Nn \g__sjtu_zihao_tl {#1} - \int_gset:Nn \g__sjtu_font_size_int { 1 } - \dim_gset:Nn \g__sjtu_font_size_dim { 10.5 bp } - } , - zihao / -4 .code:n = - { - \tl_gset:Nn \g__sjtu_zihao_tl {#1} - \int_gset:Nn \g__sjtu_font_size_int { 2 } - \dim_gset:Nn \g__sjtu_font_size_dim { 12 bp } - } , - zihao .initial:n = { 5 } , - linespread .fp_gset:N = \g__sjtu_line_spread_fp , - linespread .initial:n = { \c_nan_fp } , - linespread .value_required:n = true , baselineskip .choice: , baselineskip .value_required:n = true , baselineskip / false .code:n = @@ -110,7 +149,10 @@ text-font .initial:n = { newtx } , math-font .tl_gset:N = \g__sjtu_math_font_tl , cjk-font .tl_gset:N = \g__sjtu_cjk_font_tl , - fontset .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = #1 } } , + fontset .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = #1 } } , + nofonts .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = none } } , + adobefonts .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = adobe } } , + winfonts .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = windows } } , math-style .choice: , math-style .value_required:n = true, math-style / TeX .code:n = @@ -144,91 +186,51 @@ { \bool_gset_false:N \g__sjtu_integral_limits_bool } , integral-limits / true .code:n = { \bool_gset_true:N \g__sjtu_integral_limits_bool } , - oneside .value_forbidden:n = true, - twoside .value_forbidden:n = true, - oneside .code:n = - { \bool_gset_false:N \g__sjtu_twoside_bool } , - twoside .code:n = - { \bool_gset_true:N \g__sjtu_twoside_bool } , - titlepage .value_forbidden:n = true, - notitlepage .value_forbidden:n = true, - titlepage .code:n = - { \bool_gset_true:N \g__sjtu_titlepage_bool } , - notitlepage .code:n = - { \bool_gset_false:N \g__sjtu_titlepage_bool } , - draft .value_forbidden:n = true, - final .value_forbidden:n = true, - draft .code:n = - { \bool_gset_true:N \g__sjtu_draft_bool } , - final .code:n = - { \bool_gset_false:N \g__sjtu_draft_bool } , - unknown .code:n = { \msg_error:nn { sjtutex } { unknown-option } } - } -\msg_new:nnn { sjtutex } { unknown-option } - { Class~ option~ "\l_keys_key_tl"~ is~ unknown. } -\cs_if_exist:NTF \ProcessKeyOptions - { \ProcessKeyOptions [ sjtu / option ] } - { - \RequirePackage { l3keys2e } - \ProcessKeysOptions { sjtu / option } - } -\bool_if:NF \g__sjtu_fixed_baselineskip_bool - { - \fp_if_nan:nT { \g__sjtu_line_spread_fp } - { \fp_set:Nn \g__sjtu_line_spread_fp { 1.3 } } - } -\clist_set:Nx \g__sjtu_math_font_options_clist - { - \bool_if:NT \g__sjtu_slanted_uppercase_greek_bool - { slantedGreek } , - \bool_if:NT \g__sjtu_upright_integral_bool - { upint } - } -\clist_put_right:Nx \@classoptionslist - { - a4paper , - \tl_if_eq:NNT \g__sjtu_lang_tl \c__sjtu_lang_de_tl - { german, ngerman } , - \bool_if:NT \g__sjtu_integral_limits_bool - { intlimits } , - \g__sjtu_math_font_options_clist - } -\clist_put_right:Nx \g__sjtu_options_to_ctex_class_clist - { - zihao = \g__sjtu_zihao_tl , - \fp_if_nan:nF { \g__sjtu_line_spread_fp } - { linespread = \fp_use:N \g__sjtu_line_spread_fp } , - \bool_if:NTF \g__sjtu_twoside_bool - { twoside } { oneside } , - \bool_if:NTF \g__sjtu_titlepage_bool - { titlepage } { notitlepage } , - \bool_if:NTF \g__sjtu_draft_bool - { draft } { final } + unknown .code:n = + { \clist_gput_right:No \g__sjtu_options_to_ctex_class_clist { \CurrentOption } } } -\exp_args:No \PassOptionsToClass - { \g__sjtu_options_to_ctex_class_clist } - { ctexart } -\clist_set:Nx \g__sjtu_options_to_packages_clist +\clist_map_inline:nn + { GBK, scheme, cap, nocap } { - { no-math } { fontspec } , - { list = off } { bicaption } , - { warnings-off = + \keys_define:nn { sjtu / option } { - mathtools-overbracket, - mathtools-colon + #1 .code:n = + { \msg_warning:nn { sjtutex } { unsupported-option } } } - } { unicode-math } , - { amsmath, thmmarks } { ntheorem } , - { - \bool_if:NTF \g__sjtu_integral_limits_bool - { displaylimits } { nolimits } - } { cmupint } } +\ProcessKeyOptions [ sjtu / option ] +\__sjtu_conditional_const:nn { main_lang_de } + { \str_if_eq_p:Vn \g__sjtu_lang_tl { de } } +\__sjtu_conditional_const:nn { main_lang_ja } + { \str_if_eq_p:Vn \g__sjtu_lang_tl { ja } } +\bool_if:NT \g__sjtu_slanted_uppercase_greek_bool + { \clist_put_right:Nn \g__sjtu_math_font_options_clist { slantedGreek } } +\bool_if:NT \g__sjtu_upright_integral_bool + { \clist_put_right:Nn \g__sjtu_math_font_options_clist { upint } } +\clist_put_left:Nn \@classoptionslist { a4paper } +\__sjtu_if_main_lang_de:T + { \clist_put_right:Nn \@classoptionslist { german, ngerman } } +\bool_if:NTF \g__sjtu_integral_limits_bool + { + \clist_put_right:Nn \@classoptionslist { intlimits } + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { { displaylimits } { cmupint } } + } + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { { nolimits } { cmupint } } + } +\clist_concat:NNN \@classoptionslist + \@classoptionslist \g__sjtu_math_font_options_clist +\exp_args:No \PassOptionsToClass + { \g__sjtu_options_to_ctex_class_clist } + { ctexart } \clist_map_inline:Nn \g__sjtu_options_to_packages_clist { \PassOptionsToPackage #1 } \LoadClass { ctexart } \RequirePackage { + array, mathtools, geometry, fancyhdr, @@ -240,83 +242,27 @@ graphicx, enumitem } -\cs_generate_variant:Nn \cs_gset:Npn { cpo } -\cs_generate_variant:Nn \tl_const:Nn { Nv } -\cs_generate_variant:Nn \clist_use:Nn { NV, cv } -\exp_args_generate:n { Nnv } -\cs_generate_variant:Nn \exp_last_unbraced:Ne { ce } -\prg_generate_conditional_variant:Nnn \regex_match:nn { ne } { T, TF } -\cs_new:Npx \__sjtu_engine_case:nn #1#2 - { - \bool_lazy_or:nnTF - { \sys_if_engine_xetex_p: } - { \sys_if_engine_luatex_p: } - {#2} - { \sys_if_engine_pdftex:T {#1} } - } -\cs_new:Npx \__sjtu_engine_case:nnn #1#2#3 - { - \sys_if_engine_xetex:TF - {#2} - { - \sys_if_engine_luatex:TF - {#3} - { \sys_if_engine_pdftex:T {#1} } - } - } -\cs_new:Npx \__sjtu_unicode_engine_case:nn #1#2 - { - \sys_if_engine_xetex:TF - {#1} - { \sys_if_engine_luatex:T {#2} } - } -\__sjtu_engine_case:nn - { - \cs_new:Npn \__sjtu_unicode_char:n #1 - { - \exp_not:N \Unicode - { \int_div_truncate:nn {#1} { 256 } } - { \int_mod:nn {#1} { 256 } } - } - } - { \cs_new:Npn \__sjtu_unicode_char:n #1 { \tex_Uchar:D #1 \scan_stop: } } -\cs_new_protected:Npn \__sjtu_preto_cmd:Nn #1#2 - { - \ctex_preto_cmd:NnnTF #1 { } {#2} - { } { \ctex_patch_failure:N #1 } - } -\cs_new_protected:Npn \__sjtu_appto_cmd:Nn #1#2 - { - \ctex_appto_cmd:NnnTF #1 { } {#2} - { } { \ctex_patch_failure:N #1 } - } -\cs_new:Npn \__sjtu_skip_add_to_wd:Nn #1#2 - { - \hbox_set:Nn \l__sjtu_tmp_box {#2} - \skip_add:Nn #1 { \box_wd:N \l__sjtu_tmp_box } - } -\cs_generate_variant:Nn \__sjtu_skip_add_to_wd:Nn { cv } -\cs_new:Npn \__sjtu_cs_provide_eq:NN #1#2 - { \cs_if_exist:NF #1 { \cs_set_eq:NN #1 #2 } } -\cs_generate_variant:Nn \__sjtu_cs_provide_eq:NN { cc } -\cs_new_protected:Npn \__sjtu_define_name:nn #1#2 - { \tl_const:cn { c__sjtu_name_ #1 _tl } {#2} } -\cs_new_protected:Npn \__sjtu_define_name:nnn #1#2#3 - { \tl_const:cn { c__sjtu_name_ #2 _ #1 _tl } {#3} } -\cs_new_protected:Npn \__sjtu_define_symbol:nn #1#2 - { \tl_const:cx { c__sjtu_symbol_ #1 _tl } { \__sjtu_unicode_char:n {#2} } } +\normalsize +\cs_set_protected:Npe \SJTU@orig@normalsize + { \exp_not:N \fontsize { \f@size } { \f@baselineskip } \exp_not:N \selectfont } +\msg_new:nnn { sjtutex } { baselineskip-invalid } + { Invalid~baselineskip~value~'#1'! \\ Using~default~value~instead. } \cs_new_protected:Npn \__sjtu_set_font_size:nnNn #1#2#3#4 { \cs_set_protected:Npn #3 { \@setfontsize #3 {#1} {#2} #4 } } -\tl_set:Nx \l__sjtu_font_size_tl - { - { \dim_to_decimal:n { \g__sjtu_font_size_dim } } - { \dim_to_decimal:n { \g__sjtu_baseline_skip_dim } } - } \bool_if:NT \g__sjtu_fixed_baselineskip_bool { - \int_case:nn { \g__sjtu_font_size_int } + \dim_compare:nNnTF { \f@size pt } > { \g__sjtu_baseline_skip_dim } { - { 1 } { + \msg_warning:nne { sjtutex } { baselineskip-invalid } + { \dim_to_decimal:n { \g__sjtu_baseline_skip_dim } pt } + } + { + \tl_set:Ne \l__sjtu_font_size_tl + { { \f@size } { \dim_to_decimal:n { \g__sjtu_baseline_skip_dim } } } + \int_case:nn { \@ptsize } + { + { 0 } + { \exp_after:wN \__sjtu_set_font_size:nnNn \l__sjtu_font_size_tl \normalsize { @@ -327,7 +273,20 @@ \let\@listi\@listI } } - { 2 } { + { 1 } + { + \exp_after:wN \__sjtu_set_font_size:nnNn \l__sjtu_font_size_tl + \normalsize + { + \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI + } + } + { 2 } + { \exp_after:wN \__sjtu_set_font_size:nnNn \l__sjtu_font_size_tl \normalsize { @@ -338,22 +297,18 @@ \let\@listi\@listI } } + } + \normalsize } - \normalsize } \NewDocumentCommand \setbaselineskip { m } { \fontsize { \f@size } {#1} \selectfont } -\cs_new_protected:Npn \__sjtu_fontset_error:nn #1#2 - { \msg_error:nnnn { sjtutex } { font-unavailable } {#1} {#2} } \msg_new:nnn { sjtutex } { font-unavailable } - { `#1-font~ =~ #2'~ is~ unavailable~ in~ current~ mode. } -\cs_new_eq:NN \__sjtu_fontset_case:nn \__sjtu_engine_case:nn -\cs_new:Npx \__sjtu_fontset_case:nnn #1#2#3 - { - \__sjtu_engine_case:nn - { \sys_if_output_pdf:TF {#1} {#2} } - {#3} - } + { '#1-font~=~#2'~is~unavailable~in~current~mode. } +\cs_new_protected:Npn \__sjtu_fontset_error:nn #1#2 + { \msg_critical:nnnn { sjtutex } { font-unavailable } {#1} {#2} } +\cs_set_protected:Npn \ctex_fontset_error:n #1 + { \msg_critical:nnnn { sjtutex } { font-unavailable } { cjk } {#1} } \cs_new_protected:Nn \__sjtu_declare_math_symbol:nnNn { \cs_undefine:N #3 @@ -395,9 +350,14 @@ { \tl_gset:Nn \g__sjtu_cjk_font_tl { fandol } } } } +\msg_new:nnn { sjtutex } { invalid-font } + { + Invalid~value~'#1-font~=~\tl_use:c { g__sjtu_ #1 _font_tl }'! \\ + Using~'#2'~instead. + } \cs_new_protected:Npn \__sjtu_load_font:nn #1#2 { - \str_if_eq:eeF { \tl_use:c { g__sjtu_ #1 _font_tl } } { none } + \str_if_eq:vnF { g__sjtu_ #1 _font_tl } { none } { \file_if_exist:nF { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } @@ -409,11 +369,6 @@ { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } } } -\msg_new:nnn { sjtutex } { invalid-font } - { - Invalid~ value~ `#1-font~ =~ \tl_use:c { g__sjtu_ #1 _font_tl }~ '! \\\\ - Using~ `#2'~ instead. - } \cs_new_protected:Nn \__sjtu_load_fontset: { \clist_map_inline:nn @@ -444,25 +399,47 @@ \scpolint\npolint\pointint\sqint\intlarhk\intx \intcap\intcup\upint\lowint } + \clist_map_inline:nn + { amsfonts, amssymb, bm, upgreek } + { \__sjtu_disable_package_load:n {#1} } } \ctex_at_end_preamble:n { - \@ifpackageloaded { unicode-math } - { } { \RequirePackage { bm } } + \IfPackageLoadedF { unicode-math } + { + \RequirePackage { bm } + \cs_if_exist:NF \uppi + { \RequirePackage { upgreek } } + \cs_if_exist:NF \checkmark + { \RequirePackage { amsfonts } } + } } \NewDocumentCommand \CJKrmfamily { } { \CJKfamily { \CJKrmdefault } } \NewDocumentCommand \CJKsffamily { } { \CJKfamily { \CJKsfdefault } } \NewDocumentCommand \CJKttfamily { } { \CJKfamily { \CJKttdefault } } -\__sjtu_unicode_engine_case:nn +\sys_if_engine_xetex:T { \xeCJK_declare_char_class:nn { CJK } { "24EA, "2460->"2473, "3251->"32BF, "25A1 } } +\sys_if_engine_luatex:T { \ltjdefcharrange { 99 } - { "24EA, "2460-"2473, "3251-"32BF, "25A1 } + { "24EA, "2460- "2473, "3251- "32BF, "25A1 } \ltjsetparameter { jacharrange = { +99 } } } +\sys_if_engine_pdftex:TF + { + \cs_new:Npn \__sjtu_unicode_char:n #1 + { + \exp_not:N \Unicode + { \int_div_truncate:nn {#1} { 256 } } + { \int_mod:nn {#1} { 256 } } + } + } + { \cs_new:Npn \__sjtu_unicode_char:n #1 { \tex_Uchar:D #1 \scan_stop: } } +\cs_new_protected:Npn \__sjtu_symbol_const:nn #1#2 + { \tl_const:ce { c__sjtu_symbol_ #1 _tl } { \__sjtu_unicode_char:n {#2} } } \__sjtu_load_fontset: \keys_define:nn { sjtu / name } { @@ -486,7 +463,6 @@ listalgorithm .tl_set:N = \SJTU@listalgorithmname , listalgorithm .initial:n = { List~of~Algorithms } , } -\file_input:n { sjtu-name-generic- \g__sjtu_lang_tl .def } \geometry { top = 3.5 cm, @@ -519,20 +495,38 @@ header-uppercase .initial:n = { false } } \cs_generate_variant:Nn \__sjtu_nouppercase:n { V } -\cs_new:Nn \__sjtu_thepage: { \thepage } +\tl_set:Nn \__sjtu_the_page_tl { \thepage } +\tl_new:N \__sjtu_the_last_page_tl +\msg_new:nnn { sjtutex } { require-pageslts } + { + Add~'\token_to_str:N \usepackage{pageslts}'~in~your~preamble \\ + to~enable~the~page~number~of~the~last~page. + } \keys_define:nn { sjtu / style } { - page-number .cs_set:Np = \__sjtu_page:n #1 , + page-number .code:n = + { + \regex_match:nnT { \#2 } { #1 } + { + \ctex_if_preamble:TF + { \RequirePackage { pageslts } } + { + \IfPackageLoadedF { pageslts } + { \msg_warning:nn { sjtutex } { require-pageslts } } + } + } + \cs_set:Nn \__sjtu_page:nn { #1 } + } , page-number .initial:n = { {#1} } } \tl_set:Nn \l__sjtu_header_tl { \includegraphics [ height = 1.2 cm ] - { sjtu-vi-logo-small-red.pdf } + { sjtu-vi-logo-std-h-cor-red.pdf } } \tl_set:Nn \l__sjtu_leftmark_tl { \l__sjtu_info_subject_tl } \tl_set:Nn \l__sjtu_rightmark_tl { \leftmark } -\bool_if:NTF \g__sjtu_twoside_bool +\legacy_if:nTF { @twoside } { \fancyhead [ LO, RE ] { \l__sjtu_header_tl } \fancyhead [ LE ] { \__sjtu_nouppercase:V \l__sjtu_leftmark_tl } @@ -542,19 +536,22 @@ \fancyhead [ L ] { \l__sjtu_header_tl } \fancyhead [ R ] { \__sjtu_nouppercase:V \l__sjtu_rightmark_tl } } -\fancyfoot [ C ] { \__sjtu_page:n { \__sjtu_thepage: } } -\bool_if:NTF \g__sjtu_twoside_bool +\fancyfoot [ C ] + { \__sjtu_page:nn { \__sjtu_the_page_tl } { \__sjtu_the_last_page_tl } } +\legacy_if:nTF { @twoside } { \fancypagestyle { plain } { - \fancyhead [ LE, RO ] { } + \fancyhead { } + \fancyhead [ LO, RE ] { \l__sjtu_header_tl } \tl_set:Nn \headrulewidth { 0 pt } } } { \fancypagestyle { plain } { - \fancyhead [ R ] { } + \fancyhead { } + \fancyhead [ L ] { \l__sjtu_header_tl } \tl_set:Nn \headrulewidth { 0 pt } } } @@ -562,7 +559,7 @@ \RenewDocumentCommand \cleardoublepage { } { \clearpage - \bool_if:NT \g__sjtu_twoside_bool + \legacy_if:nT { @twoside } { \int_if_odd:nF \c@page { \hbox:n { } \thispagestyle { empty } \newpage } @@ -571,9 +568,9 @@ \ctex_set:nn { section } { format = \large \bfseries \CJKsffamily } \ctex_set:nn { subsection } - { format = \normalsize \bfseries \CJKsffamily } + { format = \SJTU@orig@normalsize \bfseries \CJKsffamily } \ctex_set:nn { subsubsection } - { format = \normalsize \normalfont } + { format = \SJTU@orig@normalsize \normalfont } \ctex_set:n { secnumdepth = 3 } \keys_define:nn { sjtu / style } { @@ -592,20 +589,6 @@ indent-first .default:n = { true } , indent-first .initial:n = { true } } -\NewDocumentCommand \SJTU@head { s O{#3} m O{#2} } - { - \IfBooleanTF {#1} - { \tl_if_empty:nF {#4} { \__sjtu_pdf_bookmark:nn { 0 } {#4} } } - { - \__sjtu_phantom_section: - \addcontentsline { toc } { section } {#4} - } - \cs_set_eq:NN \__sjtu_orig_ctex_gettitle:n \CTEX@gettitle - \cs_set:Npn \CTEX@gettitle ##1 { \__sjtu_orig_ctex_gettitle:n {#2} } - \section* {#3} - \cs_set_eq:NN \CTEX@gettitle \__sjtu_orig_ctex_gettitle:n - \@mkboth { \MakeUppercase {#2} } { \MakeUppercase {#2} } - } \cs_new_eq:NN \__sjtu_pdf_bookmark:nn \use_none:nn \cs_new_eq:NN \__sjtu_phantom_section: \prg_do_nothing: \setlist { nosep } @@ -703,15 +686,14 @@ \@addtoreset {#4} {#5} \IfBooleanF {#1} { - \cs_gset:cpo { the #4 } + \exp_args:Nco \cs_gset:Npn { the #4 } { \cs:w the #5 \cs_end: #2 #3 {#4} } } } } -\cs_set_eq:NN \__sjtu_makefnmark_plain: \@makefnmark -\cs_set_eq:NN \__sjtu_thefootnote_plain: \thefootnote -\cs_set_eq:NN \__sjtu_thempfootnote_plain: \thempfootnote -\cs_new:Npn \__sjtu_footnote_number:N #1 +\msg_new:nnn { sjtutex } { circled-number-exceed } + { Circled~number~exceed~50! } +\cs_new:Npn \__sjtu_circled_number:N #1 { \int_compare:nNnTF {#1} < { 21 } { \__sjtu_unicode_char:n { \int_eval:n { "2460 - 1 + #1 } } } @@ -721,20 +703,19 @@ { \int_compare:nNnTF {#1} < { 51 } { \__sjtu_unicode_char:n { \int_eval:n { "32B1 - 36 + #1 } } } - { \msg_warning:nn { sjtutex } { too-many-footnotes } } + { + \msg_warning:nn { sjtutex } { circled-number-exceed } + \int_to_arabic:n {#1} + } } } } -\msg_new:nnn { sjtutex } { too-many-footnotes } - { Too~ many~ footnotes. } -\cs_new:Nn \__sjtu_makefnmark_circled: { \hbox:n { \@thefnmark } } \keys_define:nn { sjtu / style } { fnmark-font .choice: , fnmark-font / haranoaji .code:n = { - \__sjtu_engine_case:nn - { \tl_set_eq:NN \l__sjtu_style_fnmark_font_tl \c_empty_tl } + \__sjtu_if_engine_opentype:TF { \tl_set:Nn \l__sjtu_style_fnmark_font_tl { @@ -746,40 +727,59 @@ ] } } + { \tl_set_eq:NN \l__sjtu_style_fnmark_font_tl \c_empty_tl } } , fnmark-font / unknown .tl_set:N = \l__sjtu_style_fnmark_font_tl , fnmark-font .initial:V = \c_empty_tl } -\cs_new:Nn \__sjtu_thefootnote_circled: - { { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@footnote } } -\cs_new:Nn \__sjtu_thempfootnote_circled: - { { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@mpfootnote } } \keys_define:nn { sjtu / style } { fnmark-style .choice: , fnmark-style / plain .code:n = { - \cs_set_eq:NN \__sjtu_makefnmark: \__sjtu_makefnmark_plain: - \cs_set_eq:NN \thefootnote \__sjtu_thefootnote_plain: - \cs_set_eq:NN \thempfootnote \__sjtu_thempfootnote_plain: + \cs_set:Npn \SJTU@makefnmark + { \hbox:n { \@textsuperscript { \normalfont \@thefnmark } } } + \tl_set:Nn \thefootnote + { \arabic { footnote } } + \tl_set:Nn \thempfootnote + { { \itshape \alph { mpfootnote } } } } , fnmark-style / circled .code:n = { - \cs_set_eq:NN \__sjtu_makefnmark: \__sjtu_makefnmark_circled: - \cs_set_eq:NN \thefootnote \__sjtu_thefootnote_circled: - \cs_set_eq:NN \thempfootnote \__sjtu_thempfootnote_circled: + \cs_set:Npn \SJTU@makefnmark + { \hbox:n { \@thefnmark } } + \tl_set:Nn \thefootnote + { { \l__sjtu_style_fnmark_font_tl \__sjtu_circled_number:N \c@footnote } } + \tl_set:Nn \thempfootnote + { { \l__sjtu_style_fnmark_font_tl \__sjtu_circled_number:N \c@mpfootnote } } + } + } +\ctex_at_end_preamble:n + { + \cs_set_eq:NN \SJTU@orig@makefntext \@makefntext + \cs_set:Npn \@makefntext #1 + { + \group_begin: + \cs_set_eq:NN \@makefnmark \SJTU@makefnmark + \SJTU@orig@makefntext {#1} + \group_end: } } -\ctex_at_end_preamble:n { - \cs_set_eq:NN \__sjtu_orig_make_fntext:n \@makefntext - \cs_set:Npn \@makefntext #1 - { - \group_begin: - \cs_set_eq:NN \@makefnmark \__sjtu_makefnmark: - \__sjtu_orig_make_fntext:n {#1} - \group_end: - } -} +\tl_set_eq:NN \l__sjtu_lang_tl \g__sjtu_lang_tl +\msg_new:nnn { sjtutex } { lang-validation } + { Invalid~language~argument~'#1'! } +\keys_define:nn { sjtu / private } + { + lang .choice: , + lang .value_required:n = true , + lang .groups:n = { lang } , + lang / unknown .code:n = + { \msg_warning:nnn { sjtutex } { lang-validation } {#1} } + } +\cs_new_protected:Npn \__sjtu_select_language:n + { \keys_set_groups:nnn { sjtu / private } { lang } } +\file_input:n { sjtu-lang- \g__sjtu_lang_tl .def } +\file_input:n { sjtu-scheme- \g__sjtu_lang_tl .def } \tl_new:N \l__sjtu_info_subject_tl \clist_new:N \l__sjtu_info_keywords_clist \keys_define:nn { sjtu / info } @@ -790,24 +790,22 @@ subject .tl_set:N = \l__sjtu_info_subject_tl , keywords .clist_set:N = \l__sjtu_info_keywords_clist , } -\file_input:n { sjtu-lang-generic- \g__sjtu_lang_tl .def } -\file_input:n { sjtu-scheme- \g__sjtu_lang_tl .def } \keys_define:nn { sjtu / info } { date .code:n = { - \regex_match:neTF { \d+-\d+-\d+ } {#1} + \regex_match:nnTF { \A \d+ \- \d+ \- \d+ \Z } {#1} { - \tl_set:Nx \@date + \tl_set:Ne \@date { \exp_last_unbraced:ce { __sjtu_date_aux_ \g__sjtu_lang_tl :w } #1 \q_stop } } { - \regex_match:neT { \d+-\d+ } {#1} + \regex_match:nnT { \A \d+ \- \d+ \Z } {#1} { - \tl_set:Nx \@date + \tl_set:Ne \@date { \exp_last_unbraced:ce { __sjtu_date_aux_short_ \g__sjtu_lang_tl :w } #1 \q_stop @@ -815,14 +813,58 @@ } } } , - date .initial:x = + date .initial:e = { \int_to_arabic:n { \c_sys_year_int } - \int_to_arabic:n { \c_sys_month_int } - \int_to_arabic:n { \c_sys_day_int } } } -\tl_set:NV \today \@date +\tl_set_eq:NN \today \@date +\bool_new:N \l__sjtu_heading_numbering_bool +\bool_new:N \l__sjtu_heading_in_toc_bool +\tl_new:N \l__sjtu_heading_title_tl +\tl_new:N \l__sjtu_heading_marking_tl +\keys_define:nn { sjtu / private } + { + intoc .value_forbidden:n = true, + intoc .groups:n = { heading } , + intoc .code:n = { \bool_set_true:N \l__sjtu_heading_in_toc_bool } , + notintoc .value_forbidden:n = true, + notintoc .groups:n = { heading } , + notintoc .code:n = { \bool_set_false:N \l__sjtu_heading_in_toc_bool } , + title .tl_set:N = \l__sjtu_heading_title_tl , + title .groups:n = { heading } , + marking .tl_set:N = \l__sjtu_heading_marking_tl , + marking .groups:n = { heading } + } +\NewDocumentCommand \SJTU@heading { O{#2} m } + { + \bool_if:nTF + { \l__sjtu_heading_numbering_bool && \l__sjtu_heading_in_toc_bool } + { \section [#1] {#2} } + { + \bool_if:NTF \l__sjtu_heading_in_toc_bool + { + \__sjtu_phantom_section: + \addcontentsline { toc } { section } {#1} + } + { \__sjtu_pdf_bookmark:nn { 0 } {#1} } + \section* {#2} + \CTEX@gettitle {#1} + \@mkboth { \MakeUppercase {#1} } { \MakeUppercase {#1} } + } + } +\cs_new_protected:Npn \__sjtu_heading:nn #1#2 + { \SJTU@heading [#1] {#2} } +\cs_generate_variant:Nn \__sjtu_heading:nn { VV } +\cs_new_protected:Npn \__sjtu_make_heading:n #1 + { + \tl_set_eq:NN \l__sjtu_heading_marking_tl \c_novalue_tl + \keys_set_groups:nnn { sjtu / private } { heading } {#1} + \__sjtu_heading:VV + \l__sjtu_heading_marking_tl \l__sjtu_heading_title_tl + } \keys_define:nn { sjtu / style } { keywords-format .choice: , @@ -832,28 +874,29 @@ { \cs_set:Nn \__sjtu_keywords_format:n { \@hangfrom { \bfseries ##1 } } } , keywords-format .initial:n = { plain } } -\bool_if:NT \g__sjtu_titlepage_bool - { \__sjtu_appto_cmd:Nn \abstract { \par } } -\__sjtu_preto_cmd:Nn \endabstract +\legacy_if:nT { @titlepage } + { \AddToHook { cmd / abstract / after } { \par } } +\AddToHook { env / abstract / end } { \clist_if_empty:NF \l__sjtu_info_keywords_clist { \par \mode_leave_vertical: \par \__sjtu_keywords_format:n { - \c__sjtu_name_keywords_tl - \c__sjtu_name_info_sep_tl + \tl_use:c { c__sjtu_name_keywords_ \g__sjtu_lang_tl _tl } + \tl_use:c { c__sjtu_name_info_sep_ \g__sjtu_lang_tl _tl } } - \clist_use:NV \l__sjtu_info_keywords_clist \c__sjtu_name_item_sep_tl + \clist_use:Nv \l__sjtu_info_keywords_clist + { c__sjtu_name_item_sep_ \g__sjtu_lang_tl _tl } \par } } -\DeclareDocumentCommand \tableofcontents { s } +\DeclareDocumentCommand \tableofcontents { O{ } } { - \IfBooleanTF {#1} - { \SJTU@head* { \contentsname } } - { \SJTU@head { \contentsname } } - \@starttoc { toc } + \group_begin: + \__sjtu_make_heading:n { title = \contentsname, #1 } + \@starttoc { toc } + \group_end: } \tl_set:Nn \SJTU@leaders { \titlerule* [ 4bp ] { . } } \contentsmargin [ 2.55 em ] { 0 pt } @@ -869,12 +912,12 @@ [ 4 em ] { } { \contentspush { \thecontentslabel \enskip } } { } { \SJTU@leaders \thecontentspage } -\NewDocumentCommand \SJTU@listof { m m s } +\NewDocumentCommand \SJTU@listof { m m O{ } } { - \IfBooleanTF {#3} - { \SJTU@head* {#1} } - { \SJTU@head {#1} } - \exp_args:Nv \@starttoc { ext@ #2 } + \group_begin: + \__sjtu_make_heading:n { title = #1, #3 } + \exp_args:Nv \@starttoc { ext@ #2 } + \group_end: } \cs_new_protected:Npn \__sjtu_new_list_of:Nnnn #1#2#3#4 { @@ -916,20 +959,23 @@ pdfdisplaydoctitle = true } \int_new:N \g__sjtu_bookmark_int - \cs_gset_protected:Npn \__sjtu_pdf_bookmark:nn #1#2 + \cs_set_protected:Npn \__sjtu_pdf_bookmark:nn #1#2 { \phantomsection \int_gincr:N \g__sjtu_bookmark_int \pdfbookmark [#1] {#2} { sjtubookmark. \int_use:N \g__sjtu_bookmark_int } } - \cs_gset_eq:NN \__sjtu_phantom_section: \phantomsection + \cs_set_eq:NN \__sjtu_phantom_section: \phantomsection + \DeclareExpandableDocumentCommand + { \__sjtu_pdfstring_newline:w } { s o m } {#3} \pdfstringdefDisableCommands { - \cs_set_eq:NN \\ \prg_do_nothing: - \cs_set_eq:NN \quad \c_empty_tl - \cs_set_eq:NN \qquad \c_empty_tl + \cs_set_eq:NN \\ \__sjtu_pdfstring_newline:w \cs_set_eq:NN \hspace \use_none:n + \cs_set_eq:NN \zihao \use_none:n + \tl_set_eq:NN \quad \c_empty_tl + \tl_set_eq:NN \qquad \c_empty_tl } \ctex_after_end_preamble:n { @@ -942,6 +988,12 @@ } } } +\ctex_at_end_package:nn { pageslts } + { + \pagenumbering { arabic } + \tl_set:Nn \__sjtu_the_last_page_tl + { \lastpageref { pagesLTS.\pagesLTS@pnc } } + } \ctex_at_end_package:nn { threeparttable } { \tl_put_right:Nn \TPTnoteSettings { \footnotesize } } \ctex_at_end_package:nn { longtable } @@ -955,28 +1007,34 @@ } { \cs_if_exist:cF {##1} - { \exp_args:Nnv \newtheorem {##1} { c__sjtu_name_ ##1 _tl } } + { + \exp_args:Nnv \newtheorem {##1} + { c__sjtu_name_ ##1 _ \g__sjtu_lang_tl _tl } + } } \clist_map_inline:nn { remark, solution } { \cs_if_exist:cF {##1} - { \exp_args:NNnv \newtheorem* {##1} { c__sjtu_name_ ##1 _tl } } + { + \exp_args:NNnv \newtheorem* {##1} + { c__sjtu_name_ ##1 _ \g__sjtu_lang_tl _tl } + } } } \ctex_at_begin_package:nn { amsthm } { \cs_if_exist:NT \openbox { - \cs_new_eq:NN \__sjtu_save_openbox: \openbox + \cs_new_eq:NN \SJTU@orig@openbox \openbox \cs_undefine:N \openbox } } \ctex_at_end_package:nn { amsthm } { \__sjtu_cs_provide_eq:NN \QED \openbox - \cs_if_exist:NT \__sjtu_save_openbox: - { \cs_set_eq:NN \openbox \__sjtu_save_openbox: } + \cs_if_exist:NT \SJTU@orig@openbox + { \cs_set_eq:NN \openbox \SJTU@orig@openbox } \tl_set:Nn \qedsymbol { \ensuremath { \QED } } \RenewDocumentEnvironment { proof } { O{ \proofname } } { @@ -994,28 +1052,28 @@ \newtheoremstyle { sjtu } { } { } { \SJTU@style@thm@body@font } { } { \SJTU@style@thm@header@font } { } { \ccwd } { } - } -\ctex_at_end_preamble:n - { - \@ifpackageloaded { amsthm } + \__sjtu_disable_package_load:n { ntheorem } + \ctex_at_end_preamble:n { \theoremstyle { sjtu } \__sjtu_new_theorems: } + } +\ctex_at_end_package:nn { ntheorem } + { + \__sjtu_disable_package_load:n { amsthm } + \ctex_at_end_preamble:n { - \@ifpackageloaded { ntheorem } - { - \__sjtu_cs_provide_eq:NN \QED \c_empty_tl - \theoremheaderfont { \SJTU@style@thm@header@font } - \theorembodyfont { \SJTU@style@thm@body@font } - \theoremseparator { \enskip } - \theoremsymbol { \ensuremath { \QED } } - \qedsymbol { \ensuremath { \QED } } - \cs_if_exist:NF \proof - { \newtheorem* { proof } { \proofname } } - \theoremsymbol { } - \__sjtu_new_theorems: - } { } + \__sjtu_cs_provide_eq:NN \QED \c_empty_tl + \theoremheaderfont { \SJTU@style@thm@header@font } + \theorembodyfont { \SJTU@style@thm@body@font } + \theoremseparator { \enskip } + \theoremsymbol { \ensuremath { \QED } } + \qedsymbol { \ensuremath { \QED } } + \cs_if_exist:NF \proof + { \newtheorem* { proof } { \proofname } } + \theoremsymbol { } + \__sjtu_new_theorems: } } \ctex_at_end_package:nn { thmtools } @@ -1030,13 +1088,16 @@ \exp_args:NV \contentsuse \thmt@envname { loe } } \cs_set:Npn \thmtlo@chaptervspacehack { } - \RenewDocumentCommand \listoftheorems { s O{ } } + \RenewDocumentCommand \listoftheorems { O{ } } { \group_begin: - \setlisttheoremstyle {#2} - \IfBooleanTF {#1} - { \SJTU@head* { \listtheoremname } } - { \SJTU@head { \listtheoremname } } + \tl_set_eq:NN \l__sjtu_heading_marking_tl \c_novalue_tl + \keys_set_groups:nnnN { sjtu / private } { heading } + { title = \listtheoremname, #1 } \l__sjtu_tmp_tl + \tl_set_rescan:NnV \l__sjtu_tmp_tl { } \l__sjtu_tmp_tl + \__sjtu_heading:VV + \l__sjtu_heading_marking_tl \l__sjtu_heading_title_tl + \exp_args:No \setlisttheoremstyle { \l__sjtu_tmp_tl } \cs_set:Npn \contentsline ##1 { \use:c { thmt@contentsline@ ##1 } {##1} } \clist_map_inline:Nn \thmt@allenvs diff --git a/Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls b/Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls index 52c925057dc..6e7aba9718e 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls +++ b/Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `class,report') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,30 +21,75 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\NeedsTeXFormat{LaTeX2e}[2024-06-01] \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} -\IfFormatAtLeastTF{2020/10/01}{} +\IfFormatAtLeastTF{2024-06-01}{} {\PackageError{sjtutex} {Your LaTeX format is outdated!\MessageBreak\MessageBreak - Release `2020/10/01' or newer is required to\MessageBreak + Release '2024-06-01' or newer is required to\MessageBreak compile this document.\MessageBreak\MessageBreak Please update your TeX distribution}{}} -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Report document class for Shanghai Jiao Tong University (SJTUTeX)} \ProvidesExplClass{sjtureport} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\dim_new:N \l__sjtu_tmp_dim -\skip_new:N \l__sjtu_tmp_skip -\box_new:N \l__sjtu_tmp_box + {\ExplFileDate}{2.2}{\ExplFileDescription} +\msg_new:nnn { sjtutex } { unsupported-engine } + { + The~sjtutex~classes~does~NOT~support~'#1'~engine. \\\\ + Please~set~your~typesetting~program~to~either~ + 'xelatex'~or~'lualatex'. + } +\bool_lazy_any:nF + { + { \sys_if_engine_xetex_p: } + { \sys_if_engine_luatex_p: } + { \sys_if_engine_pdftex_p: } + } + { \msg_fatal:nnV { sjtutex } { unsupported-engine } \c_sys_engine_str } +\tl_new:N \l__sjtu_tmp_tl +\clist_new:N \l__sjtu_tmp_clist +\cs_generate_variant:Nn \clist_use:Nn { Nv, cv } +\exp_args_generate:n { Nnv } +\cs_generate_variant:Nn \exp_last_unbraced:Ne { ce } +\cs_new_protected:Npn \__sjtu_conditional_const:nn #1#2 + { + \bool_if:nTF {#2} + { + \cs_new_eq:cN { __sjtu_if_ #1 :T } \use:n + \cs_new_eq:cN { __sjtu_if_ #1 :F } \use_none:n + \cs_new_eq:cN { __sjtu_if_ #1 :TF } \use_i:nn + \cs_new_eq:cN { __sjtu_if_ #1 _p: } \c_true_bool + } + { + \cs_new_eq:cN { __sjtu_if_ #1 :T } \use_none:n + \cs_new_eq:cN { __sjtu_if_ #1 :F } \use:n + \cs_new_eq:cN { __sjtu_if_ #1 :TF } \use_ii:nn + \cs_new_eq:cN { __sjtu_if_ #1 _p: } \c_false_bool + } + } +\__sjtu_conditional_const:nn { engine_opentype } + { + \bool_lazy_or_p:nn + { \sys_if_engine_xetex_p: } + { \sys_if_engine_luatex_p: } + } +\msg_new:nnn { sjtutex } { package-disabled } + { The~loading~of~package~'#1'~is~disabled. } +\cs_new_protected:Npn \__sjtu_disable_package_load:n #1 + { + \disable@package@load {#1} + { \msg_warning:nnn { sjtutex } { package-disabled } {#1} } + } +\cs_new_protected:Npn \__sjtu_cs_provide_eq:NN #1#2 + { \cs_if_exist:NF #1 { \cs_set_eq:NN #1 #2 } } +\cs_generate_variant:Nn \__sjtu_cs_provide_eq:NN { cc } +\cs_new_protected:Npn \__sjtu_name_set:nnn #1#2#3 + { \tl_set:cn { l__sjtu_name_ #2 _ #1 _tl } {#3} } +\cs_new_protected:Npn \__sjtu_name_const:nnn #1#2#3 + { \tl_const:cn { c__sjtu_name_ #2 _ #1 _tl } {#3} } \tl_new:N \g__sjtu_lang_tl -\tl_const:Nn \c__sjtu_lang_de_tl { de } -\tl_const:Nn \c__sjtu_lang_ja_tl { ja } -\tl_new:N \g__sjtu_zihao_tl -\int_new:N \g__sjtu_font_size_int -\dim_new:N \g__sjtu_font_size_dim \dim_new:N \g__sjtu_baseline_skip_dim \bool_new:N \g__sjtu_fixed_baselineskip_bool -\fp_new:N \g__sjtu_line_spread_fp \tl_new:N \g__sjtu_text_font_tl \tl_new:N \g__sjtu_math_font_tl \tl_new:N \g__sjtu_cjk_font_tl @@ -52,24 +98,36 @@ \bool_new:N \g__sjtu_integral_limits_bool \clist_new:N \g__sjtu_math_font_options_clist \clist_set:Nn \g__sjtu_options_to_ctex_class_clist - { a4paper, UTF8, scheme = plain, fontset = none } -\clist_new:N \g__sjtu_options_to_packages_clist -\bool_new:N \g__sjtu_twoside_bool -\bool_set_false:N \g__sjtu_twoside_bool -\bool_new:N \g__sjtu_openright_bool -\bool_set_false:N \g__sjtu_openright_bool -\bool_new:N \g__sjtu_titlepage_bool -\bool_set_true:N \g__sjtu_titlepage_bool -\bool_new:N \g__sjtu_draft_bool -\cs_new_protected:Npn \__sjtu_deprecated_option:n - { \msg_warning:nnn { sjtutex } { deprecated-option } } + { + UTF8, + zihao = -4, + linespread = 1.3, + scheme = plain, + fontset = none + } +\clist_set:Nn \g__sjtu_options_to_packages_clist + { + { no-math } { fontspec } , + { list = off } { bicaption } , + { warnings-off = + { + mathtools-overbracket, + mathtools-colon + } + } { unicode-math } , + { chapter } { algorithm } , + { algochapter } { algorithm2e } , + { amsmath, thmmarks } { ntheorem } + } +\msg_new:nnn { sjtutex } { deprecated-option } + { Option~'\l_keys_key_str'~is~deprecated! \\ #1 } \cs_new_protected:Npn \__sjtu_set_deprecated_option:n #1 { - \__sjtu_deprecated_option:n { Option~ `#1'~ is~ set. } + \msg_warning:nnn { sjtutex } { deprecated-option } { Option~'#1'~is~set. } \keys_set:nn { sjtu / option } {#1} } -\msg_new:nnn { sjtutex } { deprecated-option } - { Option~ `\l_keys_key_tl'~ is~ deprecated. \\ #1 } +\msg_new:nnn { sjtutex } { unsupported-option } + { Option~'\l_keys_key_str'~is~not~supported! \\ Will~be~ignored. } \keys_define:nn { sjtu / option } { lang .choice: , @@ -80,24 +138,6 @@ \tl_gset_eq:NN \g__sjtu_lang_tl \l_keys_choice_tl } , lang .initial:n = { zh } , - zihao .choice: , - zihao .value_required:n = true , - zihao / 5 .code:n = - { - \tl_gset:Nn \g__sjtu_zihao_tl {#1} - \int_gset:Nn \g__sjtu_font_size_int { 1 } - \dim_gset:Nn \g__sjtu_font_size_dim { 10.5 bp } - } , - zihao / -4 .code:n = - { - \tl_gset:Nn \g__sjtu_zihao_tl {#1} - \int_gset:Nn \g__sjtu_font_size_int { 2 } - \dim_gset:Nn \g__sjtu_font_size_dim { 12 bp } - } , - zihao .initial:n = { -4 } , - linespread .fp_gset:N = \g__sjtu_line_spread_fp , - linespread .initial:n = { \c_nan_fp } , - linespread .value_required:n = true , baselineskip .choice: , baselineskip .value_required:n = true , baselineskip / false .code:n = @@ -112,7 +152,10 @@ text-font .initial:n = { newtx } , math-font .tl_gset:N = \g__sjtu_math_font_tl , cjk-font .tl_gset:N = \g__sjtu_cjk_font_tl , - fontset .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = #1 } } , + fontset .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = #1 } } , + nofonts .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = none } } , + adobefonts .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = adobe } } , + winfonts .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = windows } } , math-style .choice: , math-style .value_required:n = true, math-style / TeX .code:n = @@ -146,101 +189,51 @@ { \bool_gset_false:N \g__sjtu_integral_limits_bool } , integral-limits / true .code:n = { \bool_gset_true:N \g__sjtu_integral_limits_bool } , - oneside .value_forbidden:n = true, - twoside .value_forbidden:n = true, - oneside .code:n = - { \bool_gset_false:N \g__sjtu_twoside_bool } , - twoside .code:n = - { \bool_gset_true:N \g__sjtu_twoside_bool } , - openany .value_forbidden:n = true, - openright .value_forbidden:n = true, - openany .code:n = - { \bool_gset_false:N \g__sjtu_openright_bool } , - openright .code:n = - { \bool_gset_true:N \g__sjtu_openright_bool } , - titlepage .value_forbidden:n = true, - notitlepage .value_forbidden:n = true, - titlepage .code:n = - { \bool_gset_true:N \g__sjtu_titlepage_bool } , - notitlepage .code:n = - { \bool_gset_false:N \g__sjtu_titlepage_bool } , - draft .value_forbidden:n = true, - final .value_forbidden:n = true, - draft .code:n = - { \bool_gset_true:N \g__sjtu_draft_bool } , - final .code:n = - { \bool_gset_false:N \g__sjtu_draft_bool } , - unknown .code:n = { \msg_error:nn { sjtutex } { unknown-option } } - } -\msg_new:nnn { sjtutex } { unknown-option } - { Class~ option~ "\l_keys_key_tl"~ is~ unknown. } -\cs_if_exist:NTF \ProcessKeyOptions - { \ProcessKeyOptions [ sjtu / option ] } - { - \RequirePackage { l3keys2e } - \ProcessKeysOptions { sjtu / option } - } -\bool_if:NF \g__sjtu_fixed_baselineskip_bool - { - \fp_if_nan:nT { \g__sjtu_line_spread_fp } - { \fp_set:Nn \g__sjtu_line_spread_fp { 1.3 } } - } -\clist_set:Nx \g__sjtu_math_font_options_clist - { - \bool_if:NT \g__sjtu_slanted_uppercase_greek_bool - { slantedGreek } , - \bool_if:NT \g__sjtu_upright_integral_bool - { upint } - } -\clist_put_right:Nx \@classoptionslist - { - a4paper , - \tl_if_eq:NNT \g__sjtu_lang_tl \c__sjtu_lang_de_tl - { german, ngerman } , - \bool_if:NT \g__sjtu_integral_limits_bool - { intlimits } , - \g__sjtu_math_font_options_clist - } -\clist_put_right:Nx \g__sjtu_options_to_ctex_class_clist - { - zihao = \g__sjtu_zihao_tl , - \fp_if_nan:nF { \g__sjtu_line_spread_fp } - { linespread = \fp_use:N \g__sjtu_line_spread_fp } , - \bool_if:NTF \g__sjtu_twoside_bool - { twoside } { oneside } , - \bool_if:NTF \g__sjtu_openright_bool - { openright } { openany } , - \bool_if:NTF \g__sjtu_titlepage_bool - { titlepage } { notitlepage } , - \bool_if:NTF \g__sjtu_draft_bool - { draft } { final } + unknown .code:n = + { \clist_gput_right:No \g__sjtu_options_to_ctex_class_clist { \CurrentOption } } } -\exp_args:No \PassOptionsToClass - { \g__sjtu_options_to_ctex_class_clist } - { ctexrep } -\clist_set:Nx \g__sjtu_options_to_packages_clist +\clist_map_inline:nn + { GBK, scheme, cap, nocap } { - { no-math } { fontspec } , - { list = off } { bicaption } , - { warnings-off = + \keys_define:nn { sjtu / option } { - mathtools-overbracket, - mathtools-colon + #1 .code:n = + { \msg_warning:nn { sjtutex } { unsupported-option } } } - } { unicode-math } , - { amsmath, thmmarks } { ntheorem } , - { chapter } { algorithm } , - { algochapter } { algorithm2e } , - { - \bool_if:NTF \g__sjtu_integral_limits_bool - { displaylimits } { nolimits } - } { cmupint } } +\ProcessKeyOptions [ sjtu / option ] +\__sjtu_conditional_const:nn { main_lang_de } + { \str_if_eq_p:Vn \g__sjtu_lang_tl { de } } +\__sjtu_conditional_const:nn { main_lang_ja } + { \str_if_eq_p:Vn \g__sjtu_lang_tl { ja } } +\bool_if:NT \g__sjtu_slanted_uppercase_greek_bool + { \clist_put_right:Nn \g__sjtu_math_font_options_clist { slantedGreek } } +\bool_if:NT \g__sjtu_upright_integral_bool + { \clist_put_right:Nn \g__sjtu_math_font_options_clist { upint } } +\clist_put_left:Nn \@classoptionslist { a4paper } +\__sjtu_if_main_lang_de:T + { \clist_put_right:Nn \@classoptionslist { german, ngerman } } +\bool_if:NTF \g__sjtu_integral_limits_bool + { + \clist_put_right:Nn \@classoptionslist { intlimits } + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { { displaylimits } { cmupint } } + } + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { { nolimits } { cmupint } } + } +\clist_concat:NNN \@classoptionslist + \@classoptionslist \g__sjtu_math_font_options_clist +\exp_args:No \PassOptionsToClass + { \g__sjtu_options_to_ctex_class_clist } + { ctexrep } \clist_map_inline:Nn \g__sjtu_options_to_packages_clist { \PassOptionsToPackage #1 } \LoadClass { ctexrep } \RequirePackage { + array, mathtools, geometry, fancyhdr, @@ -252,83 +245,27 @@ graphicx, enumitem } -\cs_generate_variant:Nn \cs_gset:Npn { cpo } -\cs_generate_variant:Nn \tl_const:Nn { Nv } -\cs_generate_variant:Nn \clist_use:Nn { NV, cv } -\exp_args_generate:n { Nnv } -\cs_generate_variant:Nn \exp_last_unbraced:Ne { ce } -\prg_generate_conditional_variant:Nnn \regex_match:nn { ne } { T, TF } -\cs_new:Npx \__sjtu_engine_case:nn #1#2 - { - \bool_lazy_or:nnTF - { \sys_if_engine_xetex_p: } - { \sys_if_engine_luatex_p: } - {#2} - { \sys_if_engine_pdftex:T {#1} } - } -\cs_new:Npx \__sjtu_engine_case:nnn #1#2#3 - { - \sys_if_engine_xetex:TF - {#2} - { - \sys_if_engine_luatex:TF - {#3} - { \sys_if_engine_pdftex:T {#1} } - } - } -\cs_new:Npx \__sjtu_unicode_engine_case:nn #1#2 - { - \sys_if_engine_xetex:TF - {#1} - { \sys_if_engine_luatex:T {#2} } - } -\__sjtu_engine_case:nn - { - \cs_new:Npn \__sjtu_unicode_char:n #1 - { - \exp_not:N \Unicode - { \int_div_truncate:nn {#1} { 256 } } - { \int_mod:nn {#1} { 256 } } - } - } - { \cs_new:Npn \__sjtu_unicode_char:n #1 { \tex_Uchar:D #1 \scan_stop: } } -\cs_new_protected:Npn \__sjtu_preto_cmd:Nn #1#2 - { - \ctex_preto_cmd:NnnTF #1 { } {#2} - { } { \ctex_patch_failure:N #1 } - } -\cs_new_protected:Npn \__sjtu_appto_cmd:Nn #1#2 - { - \ctex_appto_cmd:NnnTF #1 { } {#2} - { } { \ctex_patch_failure:N #1 } - } -\cs_new:Npn \__sjtu_skip_add_to_wd:Nn #1#2 - { - \hbox_set:Nn \l__sjtu_tmp_box {#2} - \skip_add:Nn #1 { \box_wd:N \l__sjtu_tmp_box } - } -\cs_generate_variant:Nn \__sjtu_skip_add_to_wd:Nn { cv } -\cs_new:Npn \__sjtu_cs_provide_eq:NN #1#2 - { \cs_if_exist:NF #1 { \cs_set_eq:NN #1 #2 } } -\cs_generate_variant:Nn \__sjtu_cs_provide_eq:NN { cc } -\cs_new_protected:Npn \__sjtu_define_name:nn #1#2 - { \tl_const:cn { c__sjtu_name_ #1 _tl } {#2} } -\cs_new_protected:Npn \__sjtu_define_name:nnn #1#2#3 - { \tl_const:cn { c__sjtu_name_ #2 _ #1 _tl } {#3} } -\cs_new_protected:Npn \__sjtu_define_symbol:nn #1#2 - { \tl_const:cx { c__sjtu_symbol_ #1 _tl } { \__sjtu_unicode_char:n {#2} } } +\normalsize +\cs_set_protected:Npe \SJTU@orig@normalsize + { \exp_not:N \fontsize { \f@size } { \f@baselineskip } \exp_not:N \selectfont } +\msg_new:nnn { sjtutex } { baselineskip-invalid } + { Invalid~baselineskip~value~'#1'! \\ Using~default~value~instead. } \cs_new_protected:Npn \__sjtu_set_font_size:nnNn #1#2#3#4 { \cs_set_protected:Npn #3 { \@setfontsize #3 {#1} {#2} #4 } } -\tl_set:Nx \l__sjtu_font_size_tl - { - { \dim_to_decimal:n { \g__sjtu_font_size_dim } } - { \dim_to_decimal:n { \g__sjtu_baseline_skip_dim } } - } \bool_if:NT \g__sjtu_fixed_baselineskip_bool { - \int_case:nn { \g__sjtu_font_size_int } + \dim_compare:nNnTF { \f@size pt } > { \g__sjtu_baseline_skip_dim } + { + \msg_warning:nne { sjtutex } { baselineskip-invalid } + { \dim_to_decimal:n { \g__sjtu_baseline_skip_dim } pt } + } { - { 1 } { + \tl_set:Ne \l__sjtu_font_size_tl + { { \f@size } { \dim_to_decimal:n { \g__sjtu_baseline_skip_dim } } } + \int_case:nn { \@ptsize } + { + { 0 } + { \exp_after:wN \__sjtu_set_font_size:nnNn \l__sjtu_font_size_tl \normalsize { @@ -339,7 +276,20 @@ \let\@listi\@listI } } - { 2 } { + { 1 } + { + \exp_after:wN \__sjtu_set_font_size:nnNn \l__sjtu_font_size_tl + \normalsize + { + \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI + } + } + { 2 } + { \exp_after:wN \__sjtu_set_font_size:nnNn \l__sjtu_font_size_tl \normalsize { @@ -350,22 +300,18 @@ \let\@listi\@listI } } + } + \normalsize } - \normalsize } \NewDocumentCommand \setbaselineskip { m } { \fontsize { \f@size } {#1} \selectfont } -\cs_new_protected:Npn \__sjtu_fontset_error:nn #1#2 - { \msg_error:nnnn { sjtutex } { font-unavailable } {#1} {#2} } \msg_new:nnn { sjtutex } { font-unavailable } - { `#1-font~ =~ #2'~ is~ unavailable~ in~ current~ mode. } -\cs_new_eq:NN \__sjtu_fontset_case:nn \__sjtu_engine_case:nn -\cs_new:Npx \__sjtu_fontset_case:nnn #1#2#3 - { - \__sjtu_engine_case:nn - { \sys_if_output_pdf:TF {#1} {#2} } - {#3} - } + { '#1-font~=~#2'~is~unavailable~in~current~mode. } +\cs_new_protected:Npn \__sjtu_fontset_error:nn #1#2 + { \msg_critical:nnnn { sjtutex } { font-unavailable } {#1} {#2} } +\cs_set_protected:Npn \ctex_fontset_error:n #1 + { \msg_critical:nnnn { sjtutex } { font-unavailable } { cjk } {#1} } \cs_new_protected:Nn \__sjtu_declare_math_symbol:nnNn { \cs_undefine:N #3 @@ -407,9 +353,14 @@ { \tl_gset:Nn \g__sjtu_cjk_font_tl { fandol } } } } +\msg_new:nnn { sjtutex } { invalid-font } + { + Invalid~value~'#1-font~=~\tl_use:c { g__sjtu_ #1 _font_tl }'! \\ + Using~'#2'~instead. + } \cs_new_protected:Npn \__sjtu_load_font:nn #1#2 { - \str_if_eq:eeF { \tl_use:c { g__sjtu_ #1 _font_tl } } { none } + \str_if_eq:vnF { g__sjtu_ #1 _font_tl } { none } { \file_if_exist:nF { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } @@ -421,11 +372,6 @@ { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } } } -\msg_new:nnn { sjtutex } { invalid-font } - { - Invalid~ value~ `#1-font~ =~ \tl_use:c { g__sjtu_ #1 _font_tl }~ '! \\\\ - Using~ `#2'~ instead. - } \cs_new_protected:Nn \__sjtu_load_fontset: { \clist_map_inline:nn @@ -456,25 +402,47 @@ \scpolint\npolint\pointint\sqint\intlarhk\intx \intcap\intcup\upint\lowint } + \clist_map_inline:nn + { amsfonts, amssymb, bm, upgreek } + { \__sjtu_disable_package_load:n {#1} } } \ctex_at_end_preamble:n { - \@ifpackageloaded { unicode-math } - { } { \RequirePackage { bm } } + \IfPackageLoadedF { unicode-math } + { + \RequirePackage { bm } + \cs_if_exist:NF \uppi + { \RequirePackage { upgreek } } + \cs_if_exist:NF \checkmark + { \RequirePackage { amsfonts } } + } } \NewDocumentCommand \CJKrmfamily { } { \CJKfamily { \CJKrmdefault } } \NewDocumentCommand \CJKsffamily { } { \CJKfamily { \CJKsfdefault } } \NewDocumentCommand \CJKttfamily { } { \CJKfamily { \CJKttdefault } } -\__sjtu_unicode_engine_case:nn +\sys_if_engine_xetex:T { \xeCJK_declare_char_class:nn { CJK } { "24EA, "2460->"2473, "3251->"32BF, "25A1 } } +\sys_if_engine_luatex:T { \ltjdefcharrange { 99 } - { "24EA, "2460-"2473, "3251-"32BF, "25A1 } + { "24EA, "2460- "2473, "3251- "32BF, "25A1 } \ltjsetparameter { jacharrange = { +99 } } } +\sys_if_engine_pdftex:TF + { + \cs_new:Npn \__sjtu_unicode_char:n #1 + { + \exp_not:N \Unicode + { \int_div_truncate:nn {#1} { 256 } } + { \int_mod:nn {#1} { 256 } } + } + } + { \cs_new:Npn \__sjtu_unicode_char:n #1 { \tex_Uchar:D #1 \scan_stop: } } +\cs_new_protected:Npn \__sjtu_symbol_const:nn #1#2 + { \tl_const:ce { c__sjtu_symbol_ #1 _tl } { \__sjtu_unicode_char:n {#2} } } \__sjtu_load_fontset: \keys_define:nn { sjtu / name } { @@ -499,7 +467,6 @@ listalgorithm .tl_set:N = \SJTU@listalgorithmname , listalgorithm .initial:n = { List~of~Algorithms } , } -\file_input:n { sjtu-name-generic- \g__sjtu_lang_tl .def } \geometry { top = 3.5 cm, @@ -532,20 +499,38 @@ header-uppercase .initial:n = { false } } \cs_generate_variant:Nn \__sjtu_nouppercase:n { V } -\cs_new:Nn \__sjtu_thepage: { \thepage } +\tl_set:Nn \__sjtu_the_page_tl { \thepage } +\tl_new:N \__sjtu_the_last_page_tl +\msg_new:nnn { sjtutex } { require-pageslts } + { + Add~'\token_to_str:N \usepackage{pageslts}'~in~your~preamble \\ + to~enable~the~page~number~of~the~last~page. + } \keys_define:nn { sjtu / style } { - page-number .cs_set:Np = \__sjtu_page:n #1 , + page-number .code:n = + { + \regex_match:nnT { \#2 } { #1 } + { + \ctex_if_preamble:TF + { \RequirePackage { pageslts } } + { + \IfPackageLoadedF { pageslts } + { \msg_warning:nn { sjtutex } { require-pageslts } } + } + } + \cs_set:Nn \__sjtu_page:nn { #1 } + } , page-number .initial:n = { {#1} } } \tl_set:Nn \l__sjtu_header_tl { \includegraphics [ height = 1.2 cm ] - { sjtu-vi-logo-small-red.pdf } + { sjtu-vi-logo-std-h-cor-red.pdf } } \tl_set:Nn \l__sjtu_leftmark_tl { \l__sjtu_info_subject_tl } \tl_set:Nn \l__sjtu_rightmark_tl { \leftmark } -\bool_if:NTF \g__sjtu_twoside_bool +\legacy_if:nTF { @twoside } { \fancyhead [ LO, RE ] { \l__sjtu_header_tl } \fancyhead [ LE ] { \__sjtu_nouppercase:V \l__sjtu_leftmark_tl } @@ -555,19 +540,22 @@ \fancyhead [ L ] { \l__sjtu_header_tl } \fancyhead [ R ] { \__sjtu_nouppercase:V \l__sjtu_rightmark_tl } } -\fancyfoot [ C ] { \__sjtu_page:n { \__sjtu_thepage: } } -\bool_if:NTF \g__sjtu_twoside_bool +\fancyfoot [ C ] + { \__sjtu_page:nn { \__sjtu_the_page_tl } { \__sjtu_the_last_page_tl } } +\legacy_if:nTF { @twoside } { \fancypagestyle { plain } { - \fancyhead [ LE, RO ] { } + \fancyhead { } + \fancyhead [ LO, RE ] { \l__sjtu_header_tl } \tl_set:Nn \headrulewidth { 0 pt } } } { \fancypagestyle { plain } { - \fancyhead [ R ] { } + \fancyhead { } + \fancyhead [ L ] { \l__sjtu_header_tl } \tl_set:Nn \headrulewidth { 0 pt } } } @@ -575,7 +563,7 @@ \RenewDocumentCommand \cleardoublepage { } { \clearpage - \bool_if:NT \g__sjtu_twoside_bool + \legacy_if:nT { @twoside } { \int_if_odd:nF \c@page { \hbox:n { } \thispagestyle { empty } \newpage } @@ -597,9 +585,9 @@ \ctex_set:nn { section } { format = \large \bfseries \CJKsffamily } \ctex_set:nn { subsection } - { format = \normalsize \bfseries \CJKsffamily } + { format = \SJTU@orig@normalsize \bfseries \CJKsffamily } \ctex_set:nn { subsubsection } - { format = \normalsize \normalfont } + { format = \SJTU@orig@normalsize \normalfont } \ctex_set:n { secnumdepth = 3 } \keys_define:nn { sjtu / style } { @@ -618,21 +606,6 @@ indent-first .default:n = { true } , indent-first .initial:n = { true } } -\NewDocumentCommand \SJTU@head { s O{#3} m O{#2} } - { - \CTEX@chapter@break - \IfBooleanTF {#1} - { \tl_if_empty:nF {#4} { \__sjtu_pdf_bookmark:nn { 0 } {#4} } } - { - \__sjtu_phantom_section: - \addcontentsline { toc } { chapter } {#4} - } - \cs_set_eq:NN \__sjtu_orig_ctex_gettitle:n \CTEX@gettitle - \cs_set:Npn \CTEX@gettitle ##1 { \__sjtu_orig_ctex_gettitle:n {#2} } - \chapter* {#3} - \cs_set_eq:NN \CTEX@gettitle \__sjtu_orig_ctex_gettitle:n - \@mkboth { \MakeUppercase {#2} } { \MakeUppercase {#2} } - } \cs_new_eq:NN \__sjtu_pdf_bookmark:nn \use_none:nn \cs_new_eq:NN \__sjtu_phantom_section: \prg_do_nothing: \setlist { nosep } @@ -730,7 +703,7 @@ \@addtoreset {#4} {#5} \IfBooleanF {#1} { - \cs_gset:cpo { the #4 } + \exp_args:Nco \cs_gset:Npn { the #4 } { \cs:w the #5 \cs_end: #2 #3 {#4} } } } @@ -738,10 +711,9 @@ \SJTU@counterwithin { figure } { chapter } \SJTU@counterwithin { table } { chapter } \SJTU@counterwithin [ \SJTU@style@eq@num@sep ] { equation } { chapter } -\cs_set_eq:NN \__sjtu_makefnmark_plain: \@makefnmark -\cs_set_eq:NN \__sjtu_thefootnote_plain: \thefootnote -\cs_set_eq:NN \__sjtu_thempfootnote_plain: \thempfootnote -\cs_new:Npn \__sjtu_footnote_number:N #1 +\msg_new:nnn { sjtutex } { circled-number-exceed } + { Circled~number~exceed~50! } +\cs_new:Npn \__sjtu_circled_number:N #1 { \int_compare:nNnTF {#1} < { 21 } { \__sjtu_unicode_char:n { \int_eval:n { "2460 - 1 + #1 } } } @@ -751,20 +723,19 @@ { \int_compare:nNnTF {#1} < { 51 } { \__sjtu_unicode_char:n { \int_eval:n { "32B1 - 36 + #1 } } } - { \msg_warning:nn { sjtutex } { too-many-footnotes } } + { + \msg_warning:nn { sjtutex } { circled-number-exceed } + \int_to_arabic:n {#1} + } } } } -\msg_new:nnn { sjtutex } { too-many-footnotes } - { Too~ many~ footnotes. } -\cs_new:Nn \__sjtu_makefnmark_circled: { \hbox:n { \@thefnmark } } \keys_define:nn { sjtu / style } { fnmark-font .choice: , fnmark-font / haranoaji .code:n = { - \__sjtu_engine_case:nn - { \tl_set_eq:NN \l__sjtu_style_fnmark_font_tl \c_empty_tl } + \__sjtu_if_engine_opentype:TF { \tl_set:Nn \l__sjtu_style_fnmark_font_tl { @@ -776,40 +747,59 @@ ] } } + { \tl_set_eq:NN \l__sjtu_style_fnmark_font_tl \c_empty_tl } } , fnmark-font / unknown .tl_set:N = \l__sjtu_style_fnmark_font_tl , fnmark-font .initial:V = \c_empty_tl } -\cs_new:Nn \__sjtu_thefootnote_circled: - { { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@footnote } } -\cs_new:Nn \__sjtu_thempfootnote_circled: - { { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@mpfootnote } } \keys_define:nn { sjtu / style } { fnmark-style .choice: , fnmark-style / plain .code:n = { - \cs_set_eq:NN \__sjtu_makefnmark: \__sjtu_makefnmark_plain: - \cs_set_eq:NN \thefootnote \__sjtu_thefootnote_plain: - \cs_set_eq:NN \thempfootnote \__sjtu_thempfootnote_plain: + \cs_set:Npn \SJTU@makefnmark + { \hbox:n { \@textsuperscript { \normalfont \@thefnmark } } } + \tl_set:Nn \thefootnote + { \arabic { footnote } } + \tl_set:Nn \thempfootnote + { { \itshape \alph { mpfootnote } } } } , fnmark-style / circled .code:n = { - \cs_set_eq:NN \__sjtu_makefnmark: \__sjtu_makefnmark_circled: - \cs_set_eq:NN \thefootnote \__sjtu_thefootnote_circled: - \cs_set_eq:NN \thempfootnote \__sjtu_thempfootnote_circled: + \cs_set:Npn \SJTU@makefnmark + { \hbox:n { \@thefnmark } } + \tl_set:Nn \thefootnote + { { \l__sjtu_style_fnmark_font_tl \__sjtu_circled_number:N \c@footnote } } + \tl_set:Nn \thempfootnote + { { \l__sjtu_style_fnmark_font_tl \__sjtu_circled_number:N \c@mpfootnote } } } } -\ctex_at_end_preamble:n { - \cs_set_eq:NN \__sjtu_orig_make_fntext:n \@makefntext - \cs_set:Npn \@makefntext #1 - { - \group_begin: - \cs_set_eq:NN \@makefnmark \__sjtu_makefnmark: - \__sjtu_orig_make_fntext:n {#1} - \group_end: - } -} +\ctex_at_end_preamble:n + { + \cs_set_eq:NN \SJTU@orig@makefntext \@makefntext + \cs_set:Npn \@makefntext #1 + { + \group_begin: + \cs_set_eq:NN \@makefnmark \SJTU@makefnmark + \SJTU@orig@makefntext {#1} + \group_end: + } + } +\tl_set_eq:NN \l__sjtu_lang_tl \g__sjtu_lang_tl +\msg_new:nnn { sjtutex } { lang-validation } + { Invalid~language~argument~'#1'! } +\keys_define:nn { sjtu / private } + { + lang .choice: , + lang .value_required:n = true , + lang .groups:n = { lang } , + lang / unknown .code:n = + { \msg_warning:nnn { sjtutex } { lang-validation } {#1} } + } +\cs_new_protected:Npn \__sjtu_select_language:n + { \keys_set_groups:nnn { sjtu / private } { lang } } +\file_input:n { sjtu-lang- \g__sjtu_lang_tl .def } +\file_input:n { sjtu-scheme- \g__sjtu_lang_tl .def } \tl_new:N \l__sjtu_info_subject_tl \clist_new:N \l__sjtu_info_keywords_clist \keys_define:nn { sjtu / info } @@ -820,24 +810,22 @@ subject .tl_set:N = \l__sjtu_info_subject_tl , keywords .clist_set:N = \l__sjtu_info_keywords_clist , } -\file_input:n { sjtu-lang-generic- \g__sjtu_lang_tl .def } -\file_input:n { sjtu-scheme- \g__sjtu_lang_tl .def } \keys_define:nn { sjtu / info } { date .code:n = { - \regex_match:neTF { \d+-\d+-\d+ } {#1} + \regex_match:nnTF { \A \d+ \- \d+ \- \d+ \Z } {#1} { - \tl_set:Nx \@date + \tl_set:Ne \@date { \exp_last_unbraced:ce { __sjtu_date_aux_ \g__sjtu_lang_tl :w } #1 \q_stop } } { - \regex_match:neT { \d+-\d+ } {#1} + \regex_match:nnT { \A \d+ \- \d+ \Z } {#1} { - \tl_set:Nx \@date + \tl_set:Ne \@date { \exp_last_unbraced:ce { __sjtu_date_aux_short_ \g__sjtu_lang_tl :w } #1 \q_stop @@ -845,14 +833,59 @@ } } } , - date .initial:x = + date .initial:e = { \int_to_arabic:n { \c_sys_year_int } - \int_to_arabic:n { \c_sys_month_int } - \int_to_arabic:n { \c_sys_day_int } } } -\tl_set:NV \today \@date +\tl_set_eq:NN \today \@date +\bool_new:N \l__sjtu_heading_numbering_bool +\bool_new:N \l__sjtu_heading_in_toc_bool +\tl_new:N \l__sjtu_heading_title_tl +\tl_new:N \l__sjtu_heading_marking_tl +\keys_define:nn { sjtu / private } + { + intoc .value_forbidden:n = true, + intoc .groups:n = { heading } , + intoc .code:n = { \bool_set_true:N \l__sjtu_heading_in_toc_bool } , + notintoc .value_forbidden:n = true, + notintoc .groups:n = { heading } , + notintoc .code:n = { \bool_set_false:N \l__sjtu_heading_in_toc_bool } , + title .tl_set:N = \l__sjtu_heading_title_tl , + title .groups:n = { heading } , + marking .tl_set:N = \l__sjtu_heading_marking_tl , + marking .groups:n = { heading } + } +\NewDocumentCommand \SJTU@heading { O{#2} m } + { + \bool_if:nTF + { \l__sjtu_heading_numbering_bool && \l__sjtu_heading_in_toc_bool } + { \chapter [#1] {#2} } + { + \CTEX@chapter@break + \bool_if:NTF \l__sjtu_heading_in_toc_bool + { + \__sjtu_phantom_section: + \addcontentsline { toc } { chapter } {#1} + } + { \__sjtu_pdf_bookmark:nn { 0 } {#1} } + \chapter* {#2} + \CTEX@gettitle {#1} + \@mkboth { \MakeUppercase {#1} } { \MakeUppercase {#1} } + } + } +\cs_new_protected:Npn \__sjtu_heading:nn #1#2 + { \SJTU@heading [#1] {#2} } +\cs_generate_variant:Nn \__sjtu_heading:nn { VV } +\cs_new_protected:Npn \__sjtu_make_heading:n #1 + { + \tl_set_eq:NN \l__sjtu_heading_marking_tl \c_novalue_tl + \keys_set_groups:nnn { sjtu / private } { heading } {#1} + \__sjtu_heading:VV + \l__sjtu_heading_marking_tl \l__sjtu_heading_title_tl + } \keys_define:nn { sjtu / style } { keywords-format .choice: , @@ -862,28 +895,29 @@ { \cs_set:Nn \__sjtu_keywords_format:n { \@hangfrom { \bfseries ##1 } } } , keywords-format .initial:n = { plain } } -\bool_if:NT \g__sjtu_titlepage_bool - { \__sjtu_appto_cmd:Nn \abstract { \par } } -\__sjtu_preto_cmd:Nn \endabstract +\legacy_if:nT { @titlepage } + { \AddToHook { cmd / abstract / after } { \par } } +\AddToHook { env / abstract / end } { \clist_if_empty:NF \l__sjtu_info_keywords_clist { \par \mode_leave_vertical: \par \__sjtu_keywords_format:n { - \c__sjtu_name_keywords_tl - \c__sjtu_name_info_sep_tl + \tl_use:c { c__sjtu_name_keywords_ \g__sjtu_lang_tl _tl } + \tl_use:c { c__sjtu_name_info_sep_ \g__sjtu_lang_tl _tl } } - \clist_use:NV \l__sjtu_info_keywords_clist \c__sjtu_name_item_sep_tl + \clist_use:Nv \l__sjtu_info_keywords_clist + { c__sjtu_name_item_sep_ \g__sjtu_lang_tl _tl } \par } } -\DeclareDocumentCommand \tableofcontents { s } +\DeclareDocumentCommand \tableofcontents { O{ } } { - \IfBooleanTF {#1} - { \SJTU@head* { \contentsname } } - { \SJTU@head { \contentsname } } - \@starttoc { toc } + \group_begin: + \__sjtu_make_heading:n { title = \contentsname, #1 } + \@starttoc { toc } + \group_end: } \tl_set:Nn \SJTU@leaders { \titlerule* [ 4bp ] { . } } \contentsmargin [ 2.55 em ] { 0 pt } @@ -899,12 +933,12 @@ [ 4 em ] { } { \contentspush { \thecontentslabel \enskip } } { } { \SJTU@leaders \thecontentspage } -\NewDocumentCommand \SJTU@listof { m m s } +\NewDocumentCommand \SJTU@listof { m m O{ } } { - \IfBooleanTF {#3} - { \SJTU@head* {#1} } - { \SJTU@head {#1} } - \exp_args:Nv \@starttoc { ext@ #2 } + \group_begin: + \__sjtu_make_heading:n { title = #1, #3 } + \exp_args:Nv \@starttoc { ext@ #2 } + \group_end: } \cs_new_protected:Npn \__sjtu_new_list_of:Nnnn #1#2#3#4 { @@ -946,20 +980,23 @@ pdfdisplaydoctitle = true } \int_new:N \g__sjtu_bookmark_int - \cs_gset_protected:Npn \__sjtu_pdf_bookmark:nn #1#2 + \cs_set_protected:Npn \__sjtu_pdf_bookmark:nn #1#2 { \phantomsection \int_gincr:N \g__sjtu_bookmark_int \pdfbookmark [#1] {#2} { sjtubookmark. \int_use:N \g__sjtu_bookmark_int } } - \cs_gset_eq:NN \__sjtu_phantom_section: \phantomsection + \cs_set_eq:NN \__sjtu_phantom_section: \phantomsection + \DeclareExpandableDocumentCommand + { \__sjtu_pdfstring_newline:w } { s o m } {#3} \pdfstringdefDisableCommands { - \cs_set_eq:NN \\ \prg_do_nothing: - \cs_set_eq:NN \quad \c_empty_tl - \cs_set_eq:NN \qquad \c_empty_tl + \cs_set_eq:NN \\ \__sjtu_pdfstring_newline:w \cs_set_eq:NN \hspace \use_none:n + \cs_set_eq:NN \zihao \use_none:n + \tl_set_eq:NN \quad \c_empty_tl + \tl_set_eq:NN \qquad \c_empty_tl } \ctex_after_end_preamble:n { @@ -972,6 +1009,12 @@ } } } +\ctex_at_end_package:nn { pageslts } + { + \pagenumbering { arabic } + \tl_set:Nn \__sjtu_the_last_page_tl + { \lastpageref { pagesLTS.\pagesLTS@pnc } } + } \ctex_at_end_package:nn { threeparttable } { \tl_put_right:Nn \TPTnoteSettings { \footnotesize } } \ctex_at_end_package:nn { longtable } @@ -986,30 +1029,33 @@ { \cs_if_exist:cF {##1} { - \exp_args:Nnv \newtheorem {##1} { c__sjtu_name_ ##1 _tl } - [ chapter ] + \exp_args:Nnv \newtheorem {##1} + { c__sjtu_name_ ##1 _ \g__sjtu_lang_tl _tl } [ chapter ] } } \clist_map_inline:nn { remark, solution } { \cs_if_exist:cF {##1} - { \exp_args:NNnv \newtheorem* {##1} { c__sjtu_name_ ##1 _tl } } + { + \exp_args:NNnv \newtheorem* {##1} + { c__sjtu_name_ ##1 _ \g__sjtu_lang_tl _tl } + } } } \ctex_at_begin_package:nn { amsthm } { \cs_if_exist:NT \openbox { - \cs_new_eq:NN \__sjtu_save_openbox: \openbox + \cs_new_eq:NN \SJTU@orig@openbox \openbox \cs_undefine:N \openbox } } \ctex_at_end_package:nn { amsthm } { \__sjtu_cs_provide_eq:NN \QED \openbox - \cs_if_exist:NT \__sjtu_save_openbox: - { \cs_set_eq:NN \openbox \__sjtu_save_openbox: } + \cs_if_exist:NT \SJTU@orig@openbox + { \cs_set_eq:NN \openbox \SJTU@orig@openbox } \tl_set:Nn \qedsymbol { \ensuremath { \QED } } \RenewDocumentEnvironment { proof } { O{ \proofname } } { @@ -1027,28 +1073,28 @@ \newtheoremstyle { sjtu } { } { } { \SJTU@style@thm@body@font } { } { \SJTU@style@thm@header@font } { } { \ccwd } { } - } -\ctex_at_end_preamble:n - { - \@ifpackageloaded { amsthm } + \__sjtu_disable_package_load:n { ntheorem } + \ctex_at_end_preamble:n { \theoremstyle { sjtu } \__sjtu_new_theorems: } + } +\ctex_at_end_package:nn { ntheorem } + { + \__sjtu_disable_package_load:n { amsthm } + \ctex_at_end_preamble:n { - \@ifpackageloaded { ntheorem } - { - \__sjtu_cs_provide_eq:NN \QED \c_empty_tl - \theoremheaderfont { \SJTU@style@thm@header@font } - \theorembodyfont { \SJTU@style@thm@body@font } - \theoremseparator { \enskip } - \theoremsymbol { \ensuremath { \QED } } - \qedsymbol { \ensuremath { \QED } } - \cs_if_exist:NF \proof - { \newtheorem* { proof } { \proofname } } - \theoremsymbol { } - \__sjtu_new_theorems: - } { } + \__sjtu_cs_provide_eq:NN \QED \c_empty_tl + \theoremheaderfont { \SJTU@style@thm@header@font } + \theorembodyfont { \SJTU@style@thm@body@font } + \theoremseparator { \enskip } + \theoremsymbol { \ensuremath { \QED } } + \qedsymbol { \ensuremath { \QED } } + \cs_if_exist:NF \proof + { \newtheorem* { proof } { \proofname } } + \theoremsymbol { } + \__sjtu_new_theorems: } } \ctex_at_end_package:nn { thmtools } @@ -1063,13 +1109,16 @@ \exp_args:NV \contentsuse \thmt@envname { loe } } \cs_set:Npn \thmtlo@chaptervspacehack { } - \RenewDocumentCommand \listoftheorems { s O{ } } + \RenewDocumentCommand \listoftheorems { O{ } } { \group_begin: - \setlisttheoremstyle {#2} - \IfBooleanTF {#1} - { \SJTU@head* { \listtheoremname } } - { \SJTU@head { \listtheoremname } } + \tl_set_eq:NN \l__sjtu_heading_marking_tl \c_novalue_tl + \keys_set_groups:nnnN { sjtu / private } { heading } + { title = \listtheoremname, #1 } \l__sjtu_tmp_tl + \tl_set_rescan:NnV \l__sjtu_tmp_tl { } \l__sjtu_tmp_tl + \__sjtu_heading:VV + \l__sjtu_heading_marking_tl \l__sjtu_heading_title_tl + \exp_args:No \setlisttheoremstyle { \l__sjtu_tmp_tl } \cs_set:Npn \contentsline ##1 { \use:c { thmt@contentsline@ ##1 } {##1} } \clist_map_inline:Nn \thmt@allenvs @@ -1101,10 +1150,10 @@ { \fname@algorithm } { \listalgorithmname } } \ctex_at_begin_package:nn { algorithm2e } - { \cs_set_eq:NN \__sjtu_save_chapter:w \@chapter } + { \cs_set_eq:NN \SJTU@orig@at@chapter \@chapter } \ctex_at_end_package:nn { algorithm2e } { - \cs_set_eq:NN \@chapter \__sjtu_save_chapter:w + \cs_set_eq:NN \@chapter \SJTU@orig@at@chapter \SetAlgorithmName { \SJTU@algorithmname } { \SJTU@algorithmname } { \SJTU@listalgorithmname } diff --git a/Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls b/Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls index 329f751a8a7..5c0c56b98f2 100644 --- a/Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls +++ b/Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls @@ -7,8 +7,9 @@ %% sjtutex.dtx (with options: `class,thesis') %% %% Copyright (C) SJTUG -%% 2018--2024 Weijian Wu <alexarawu@outlook.com> -%% 2022--2024 Zilong Li <logcreative@outlook.com> +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -20,34 +21,86 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\NeedsTeXFormat{LaTeX2e}[2024-06-01] \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} -\IfFormatAtLeastTF{2020/10/01}{} +\IfFormatAtLeastTF{2024-06-01}{} {\PackageError{sjtutex} {Your LaTeX format is outdated!\MessageBreak\MessageBreak - Release `2020/10/01' or newer is required to\MessageBreak + Release '2024-06-01' or newer is required to\MessageBreak compile this document.\MessageBreak\MessageBreak Please update your TeX distribution}{}} -\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $ +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ {Thesis document class for Shanghai Jiao Tong University (SJTUTeX)} \ProvidesExplClass{sjtuthesis} - {\ExplFileDate}{2.1.5}{\ExplFileDescription} -\bool_new:N \l__sjtu_tmp_bool + {\ExplFileDate}{2.2}{\ExplFileDescription} +\msg_new:nnn { sjtutex } { unsupported-engine } + { + The~sjtutex~classes~does~NOT~support~'#1'~engine. \\\\ + Please~set~your~typesetting~program~to~either~ + 'xelatex'~or~'lualatex'. + } +\bool_lazy_any:nF + { + { \sys_if_engine_xetex_p: } + { \sys_if_engine_luatex_p: } + { \sys_if_engine_pdftex_p: } + } + { \msg_fatal:nnV { sjtutex } { unsupported-engine } \c_sys_engine_str } +\tl_new:N \l__sjtu_tmp_tl \clist_new:N \l__sjtu_tmp_clist -\dim_new:N \l__sjtu_tmp_dim -\skip_new:N \l__sjtu_tmp_skip \box_new:N \l__sjtu_tmp_box +\cs_generate_variant:Nn \clist_use:Nn { Nv, cv } +\exp_args_generate:n { Nnv } +\cs_generate_variant:Nn \exp_last_unbraced:Ne { ce } +\cs_new_protected:Npn \__sjtu_conditional_const:nn #1#2 + { + \bool_if:nTF {#2} + { + \cs_new_eq:cN { __sjtu_if_ #1 :T } \use:n + \cs_new_eq:cN { __sjtu_if_ #1 :F } \use_none:n + \cs_new_eq:cN { __sjtu_if_ #1 :TF } \use_i:nn + \cs_new_eq:cN { __sjtu_if_ #1 _p: } \c_true_bool + } + { + \cs_new_eq:cN { __sjtu_if_ #1 :T } \use_none:n + \cs_new_eq:cN { __sjtu_if_ #1 :F } \use:n + \cs_new_eq:cN { __sjtu_if_ #1 :TF } \use_ii:nn + \cs_new_eq:cN { __sjtu_if_ #1 _p: } \c_false_bool + } + } +\__sjtu_conditional_const:nn { engine_opentype } + { + \bool_lazy_or_p:nn + { \sys_if_engine_xetex_p: } + { \sys_if_engine_luatex_p: } + } +\msg_new:nnn { sjtutex } { package-disabled } + { The~loading~of~package~'#1'~is~disabled. } +\cs_new_protected:Npn \__sjtu_disable_package_load:n #1 + { + \disable@package@load {#1} + { \msg_warning:nnn { sjtutex } { package-disabled } {#1} } + } +\cs_new:Npn \__sjtu_dim_set_to_wd:Nn #1#2 + { + \hbox_set:Nn \l__sjtu_tmp_box {#2} + \dim_set:Nn #1 { \box_wd:N \l__sjtu_tmp_box } + } +\cs_generate_variant:Nn \__sjtu_dim_set_to_wd:Nn { Nv } +\cs_new_protected:Npn \__sjtu_cs_provide_eq:NN #1#2 + { \cs_if_exist:NF #1 { \cs_set_eq:NN #1 #2 } } +\cs_generate_variant:Nn \__sjtu_cs_provide_eq:NN { cc } +\cs_new_protected:Npn \__sjtu_name_set:nnn #1#2#3 + { \tl_set:cn { l__sjtu_name_ #2 _ #1 _tl } {#3} } +\cs_new_protected:Npn \__sjtu_name_const:nnn #1#2#3 + { \tl_const:cn { c__sjtu_name_ #2 _ #1 _tl } {#3} } +\cs_new_protected:Npn \__sjtu_name_const_from_clist:nnnn #1#2#3#4 + { \tl_const:ce { c__sjtu_name_ #2 _ #1 _tl } { \clist_item:nn {#4} {#3} } } \int_new:N \g__sjtu_thesis_type_int \tl_new:N \g__sjtu_lang_tl \clist_set:Nn \g__sjtu_lang_clist { zh, en } -\tl_const:Nn \c__sjtu_lang_de_tl { de } -\tl_const:Nn \c__sjtu_lang_ja_tl { ja } -\tl_new:N \g__sjtu_zihao_tl -\int_new:N \g__sjtu_font_size_int -\dim_new:N \g__sjtu_font_size_dim \dim_new:N \g__sjtu_baseline_skip_dim \bool_new:N \g__sjtu_fixed_baselineskip_bool -\fp_new:N \g__sjtu_line_spread_fp \tl_new:N \g__sjtu_text_font_tl \tl_new:N \g__sjtu_math_font_tl \tl_new:N \g__sjtu_cjk_font_tl @@ -57,22 +110,35 @@ \clist_new:N \g__sjtu_math_font_options_clist \bool_new:N \g__sjtu_review_bool \clist_set:Nn \g__sjtu_options_to_ctex_class_clist - { a4paper, UTF8, scheme = plain, fontset = none } -\clist_new:N \g__sjtu_options_to_packages_clist -\bool_new:N \g__sjtu_twoside_bool -\bool_set_true:N \g__sjtu_twoside_bool -\bool_new:N \g__sjtu_openright_bool -\bool_set_true:N \g__sjtu_openright_bool -\bool_new:N \g__sjtu_draft_bool -\cs_new_protected:Npn \__sjtu_deprecated_option:n - { \msg_warning:nnn { sjtutex } { deprecated-option } } + { + UTF8, + zihao = -4, + scheme = plain, + fontset = none + } +\clist_set:Nn \g__sjtu_options_to_packages_clist + { + { no-math } { fontspec } , + { list = off } { bicaption } , + { warnings-off = + { + mathtools-overbracket, + mathtools-colon + } + } { unicode-math } , + { chapter } { algorithm } , + { algochapter } { algorithm2e } , + { amsmath, thmmarks } { ntheorem } + } +\msg_new:nnn { sjtutex } { deprecated-option } + { Option~'\l_keys_key_str'~is~deprecated! \\ #1 } \cs_new_protected:Npn \__sjtu_set_deprecated_option:n #1 { - \__sjtu_deprecated_option:n { Option~ `#1'~ is~ set. } + \msg_warning:nnn { sjtutex } { deprecated-option } { Option~'#1'~is~set. } \keys_set:nn { sjtu / option } {#1} } -\msg_new:nnn { sjtutex } { deprecated-option } - { Option~ `\l_keys_key_tl'~ is~ deprecated. \\ #1 } +\msg_new:nnn { sjtutex } { unsupported-option } + { Option~'\l_keys_key_str'~is~not~supported! \\ Will~be~ignored. } \keys_define:nn { sjtu / option } { type .choice: , @@ -91,24 +157,6 @@ { \clist_gput_right:Nn \g__sjtu_lang_clist {#1} } } , lang .initial:n = { zh } , - zihao .choice: , - zihao .value_required:n = true , - zihao / 5 .code:n = - { - \tl_gset:Nn \g__sjtu_zihao_tl {#1} - \int_gset:Nn \g__sjtu_font_size_int { 1 } - \dim_gset:Nn \g__sjtu_font_size_dim { 10.5 bp } - } , - zihao / -4 .code:n = - { - \tl_gset:Nn \g__sjtu_zihao_tl {#1} - \int_gset:Nn \g__sjtu_font_size_int { 2 } - \dim_gset:Nn \g__sjtu_font_size_dim { 12 bp } - } , - zihao .initial:n = { -4 } , - linespread .fp_gset:N = \g__sjtu_line_spread_fp , - linespread .initial:n = { \c_nan_fp } , - linespread .value_required:n = true , baselineskip .choice: , baselineskip .value_required:n = true , baselineskip / false .code:n = @@ -123,7 +171,10 @@ text-font .initial:n = { newtx } , math-font .tl_gset:N = \g__sjtu_math_font_tl , cjk-font .tl_gset:N = \g__sjtu_cjk_font_tl , - fontset .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = #1 } } , + fontset .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = #1 } } , + nofonts .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = none } } , + adobefonts .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = adobe } } , + winfonts .code:n = { \__sjtu_set_deprecated_option:n { cjk-font = windows } } , math-style .choice: , math-style .value_required:n = true, math-style / TeX .code:n = @@ -157,91 +208,58 @@ { \bool_gset_false:N \g__sjtu_integral_limits_bool } , integral-limits / true .code:n = { \bool_gset_true:N \g__sjtu_integral_limits_bool } , - oneside .value_forbidden:n = true, - twoside .value_forbidden:n = true, - oneside .code:n = - { \bool_gset_false:N \g__sjtu_twoside_bool } , - twoside .code:n = - { \bool_gset_true:N \g__sjtu_twoside_bool } , - openany .value_forbidden:n = true, - openright .value_forbidden:n = true, - openany .code:n = - { \bool_gset_false:N \g__sjtu_openright_bool } , - openright .code:n = - { \bool_gset_true:N \g__sjtu_openright_bool } , - draft .value_forbidden:n = true, - final .value_forbidden:n = true, - draft .code:n = - { \bool_gset_true:N \g__sjtu_draft_bool } , - final .code:n = - { \bool_gset_false:N \g__sjtu_draft_bool } , review .bool_gset:N = \g__sjtu_review_bool , review .initial:n = false , - unknown .code:n = { \msg_error:nn { sjtutex } { unknown-option } } + unknown .code:n = + { \clist_gput_right:No \g__sjtu_options_to_ctex_class_clist { \CurrentOption } } } -\msg_new:nnn { sjtutex } { unknown-option } - { Class~ option~ "\l_keys_key_tl"~ is~ unknown. } -\cs_if_exist:NTF \ProcessKeyOptions - { \ProcessKeyOptions [ sjtu / option ] } +\clist_map_inline:nn + { GBK, scheme, cap, nocap } { - \RequirePackage { l3keys2e } - \ProcessKeysOptions { sjtu / option } + \keys_define:nn { sjtu / option } + { + #1 .code:n = + { \msg_warning:nn { sjtutex } { unsupported-option } } + } } -\clist_set:Nx \g__sjtu_math_font_options_clist +\ProcessKeyOptions [ sjtu / option ] +\__sjtu_conditional_const:nn { main_lang_de } + { \str_if_eq_p:Vn \g__sjtu_lang_tl { de } } +\__sjtu_conditional_const:nn { main_lang_ja } + { \str_if_eq_p:Vn \g__sjtu_lang_tl { ja } } +\bool_if:NT \g__sjtu_slanted_uppercase_greek_bool + { \clist_put_right:Nn \g__sjtu_math_font_options_clist { slantedGreek } } +\bool_if:NT \g__sjtu_upright_integral_bool + { \clist_put_right:Nn \g__sjtu_math_font_options_clist { upint } } +\clist_put_left:Nn \@classoptionslist { a4paper } +\__sjtu_if_main_lang_de:T + { \clist_put_right:Nn \@classoptionslist { german, ngerman } } +\bool_if:NTF \g__sjtu_integral_limits_bool { - \bool_if:NT \g__sjtu_slanted_uppercase_greek_bool - { slantedGreek } , - \bool_if:NT \g__sjtu_upright_integral_bool - { upint } - } -\clist_put_right:Nx \@classoptionslist - { - a4paper , - \tl_if_eq:NNT \g__sjtu_lang_tl \c__sjtu_lang_de_tl - { german, ngerman } , - \bool_if:NT \g__sjtu_integral_limits_bool - { intlimits } , - \g__sjtu_math_font_options_clist - } -\clist_put_right:Nx \g__sjtu_options_to_ctex_class_clist - { - zihao = \g__sjtu_zihao_tl , - \fp_if_nan:nF { \g__sjtu_line_spread_fp } - { linespread = \fp_use:N \g__sjtu_line_spread_fp } , - \bool_if:NTF \g__sjtu_twoside_bool - { twoside } { oneside } , - \bool_if:NTF \g__sjtu_openright_bool - { openright } { openany } , - \bool_if:NTF \g__sjtu_draft_bool - { draft } { final } + \clist_put_right:Nn \@classoptionslist { intlimits } + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { { displaylimits } { cmupint } } + } + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { { nolimits } { cmupint } } + } +\clist_concat:NNN \@classoptionslist + \@classoptionslist \g__sjtu_math_font_options_clist +\cs_set_protected:Npe \__sjtu_setup:n + { + \bool_if:NTF \g__sjtu_review_bool + { \exp_not:N \keys_set_exclude_groups:nnn { sjtu } { sensitive } } + { \exp_not:N \keys_set:nn { sjtu } } } \exp_args:No \PassOptionsToClass { \g__sjtu_options_to_ctex_class_clist } { ctexbook } -\clist_set:Nx \g__sjtu_options_to_packages_clist - { - { no-math } { fontspec } , - { list = off } { bicaption } , - { warnings-off = - { - mathtools-overbracket, - mathtools-colon - } - } { unicode-math } , - { amsmath, thmmarks } { ntheorem } , - { chapter } { algorithm } , - { algochapter } { algorithm2e } , - { - \bool_if:NTF \g__sjtu_integral_limits_bool - { displaylimits } { nolimits } - } { cmupint } - } \clist_map_inline:Nn \g__sjtu_options_to_packages_clist { \PassOptionsToPackage #1 } \LoadClass { ctexbook } \RequirePackage { - xtemplate, array, mathtools, geometry, @@ -254,189 +272,27 @@ graphicx, enumitem } -\cs_generate_variant:Nn \cs_gset:Npn { cpo } -\cs_generate_variant:Nn \tl_const:Nn { Nv } -\cs_generate_variant:Nn \clist_use:Nn { NV, cv } -\exp_args_generate:n { Nnv } -\cs_generate_variant:Nn \exp_last_unbraced:Ne { ce } -\prg_generate_conditional_variant:Nnn \regex_match:nn { ne } { T, TF } -\cs_new:Npx \__sjtu_engine_case:nn #1#2 - { - \bool_lazy_or:nnTF - { \sys_if_engine_xetex_p: } - { \sys_if_engine_luatex_p: } - {#2} - { \sys_if_engine_pdftex:T {#1} } - } -\cs_new:Npx \__sjtu_engine_case:nnn #1#2#3 - { - \sys_if_engine_xetex:TF - {#2} - { - \sys_if_engine_luatex:TF - {#3} - { \sys_if_engine_pdftex:T {#1} } - } - } -\cs_new:Npx \__sjtu_unicode_engine_case:nn #1#2 - { - \sys_if_engine_xetex:TF - {#1} - { \sys_if_engine_luatex:T {#2} } - } -\__sjtu_engine_case:nn - { - \cs_new:Npn \__sjtu_unicode_char:n #1 - { - \exp_not:N \Unicode - { \int_div_truncate:nn {#1} { 256 } } - { \int_mod:nn {#1} { 256 } } - } - } - { \cs_new:Npn \__sjtu_unicode_char:n #1 { \tex_Uchar:D #1 \scan_stop: } } -\cs_new:Npn \__sjtu_dim_set_to_wd:Nn #1#2 - { - \hbox_set:Nn \l__sjtu_tmp_box {#2} - \dim_set:Nn #1 { \box_wd:N \l__sjtu_tmp_box } - } -\cs_new:Npn \__sjtu_skip_add_to_wd:Nn #1#2 - { - \hbox_set:Nn \l__sjtu_tmp_box {#2} - \skip_add:Nn #1 { \box_wd:N \l__sjtu_tmp_box } - } -\cs_generate_variant:Nn \__sjtu_dim_set_to_wd:Nn { Nv } -\cs_generate_variant:Nn \__sjtu_skip_add_to_wd:Nn { cv } -\cs_new:Npn \__sjtu_cs_provide_eq:NN #1#2 - { \cs_if_exist:NF #1 { \cs_set_eq:NN #1 #2 } } -\cs_generate_variant:Nn \__sjtu_cs_provide_eq:NN { cc } -\cs_new_protected:Npn \__sjtu_vspace:N #1 - { - \skip_vertical:N #1 - \skip_vertical:N \c_zero_skip - } -\cs_new_protected:Npn \__sjtu_vspace:n #1 - { - \skip_set:Nn \l__sjtu_tmp_skip {#1} - \__sjtu_vspace:N \l__sjtu_tmp_skip - } -\cs_new_protected:Npn \__sjtu_vspace_r:N #1 - { - \dim_set_eq:NN \l__sjtu_tmp_dim \prevdepth - \hrule height \c_zero_dim - \nobreak - \skip_vertical:N #1 - \skip_vertical:N \c_zero_skip - \dim_set_eq:NN \prevdepth \l__sjtu_tmp_dim - } -\cs_new_protected:Npn \__sjtu_vspace_r:n #1 - { - \skip_set:Nn \l__sjtu_tmp_skip {#1} - \__sjtu_vspace_r:N \l__sjtu_tmp_skip - } -\cs_new_protected:Npn \__sjtu_define_name:nn #1#2 - { \tl_const:cn { c__sjtu_name_ #1 _tl } {#2} } -\cs_new_protected:Npn \__sjtu_define_name:nnn #1#2#3 - { \tl_const:cn { c__sjtu_name_ #2 _ #1 _tl } {#3} } -\cs_new_protected:Npn \__sjtu_define_name_from_clist:nnnn #1#2#3#4 - { \tl_const:cx { c__sjtu_name_ #2 _ #1 _tl } { \clist_item:nn {#4} {#3} } } -\cs_generate_variant:Nn \__sjtu_define_name:nn { nv } -\cs_new_protected:Npn \__sjtu_define_symbol:nn #1#2 - { \tl_const:cx { c__sjtu_symbol_ #1 _tl } { \__sjtu_unicode_char:n {#2} } } -\cs_new_protected:Npn \__sjtu_if_lang_valid:nTF #1 - { \clist_if_in:NnTF \g__sjtu_lang_clist {#1} } -\msg_new:nnn { sjtutex } { lang-validation } - { Invalid~ language~ argument~ `#1'! } -\DeclareObjectType { sjtu } { 0 } -\DeclareTemplateInterface { sjtu } { component } { 0 } - { - format : tokenlist = \c_empty_tl , - content : tokenlist = \c_empty_tl , - bottom-skip : skip = \c_zero_skip , - align : choice { left, right, center, normal } = center - } -\DeclareTemplateCode { sjtu } { component } { 0 } - { - format = \l__sjtu_component_format_tl , - content = \l__sjtu_component_content_tl , - bottom-skip = \l__sjtu_component_bottom_skip , - align = - { - left = - \cs_set_eq:NN \l__sjtu_component_align: \raggedright , - right = - \cs_set_eq:NN \l__sjtu_component_align: \raggedleft , - center = - \cs_set_eq:NN \l__sjtu_component_align: \centering , - normal = - \cs_set_eq:NN \l__sjtu_component_align: \prg_do_nothing: - } - } - { - \AssignTemplateKeys - \group_begin: - \l__sjtu_component_align: - \l__sjtu_component_format_tl - \l__sjtu_component_content_tl - \par - \group_end: - \__sjtu_vspace:N \l__sjtu_component_bottom_skip - } -\DeclareTemplateInterface { sjtu } { page } { 0 } - { - bookmark : boolean = false , - bookmark-text : tokenlist = \c_empty_tl , - style : tokenlist = empty , - format : tokenlist = \c_empty_tl , - prefix : tokenlist , - components : commalist , - top-skip : skip = \c_zero_skip , - bottom-skip : skip = \c_zero_skip - } -\DeclareTemplateCode { sjtu } { page } { 0 } - { - bookmark = \l__sjtu_page_bookmark_bool , - bookmark-text = \l__sjtu_page_bookmark_text_tl , - style = \l__sjtu_page_style_tl , - format = \l__sjtu_page_format_tl , - prefix = \l__sjtu_page_prefix_tl , - components = \l__sjtu_page_components_clist , - top-skip = \l__sjtu_page_top_skip , - bottom-skip = \l__sjtu_page_bottom_skip - } - { - \AssignTemplateKeys - \bool_if:NTF \g__sjtu_openright_bool - { \cleardoublepage } { \clearpage } - \bool_if:NT \l__sjtu_page_bookmark_bool - { \__sjtu_pdf_bookmark:nn { 0 } { \l__sjtu_page_bookmark_text_tl } } - \exp_args:No \thispagestyle { \l__sjtu_page_style_tl } - \__sjtu_vspace_r:N \l__sjtu_page_top_skip - \__sjtu_vspace:n { - \tex_parskip:D } - \__sjtu_vspace:n { - \tex_baselineskip:D } - \group_begin: - \l__sjtu_page_format_tl - \clist_map_inline:Nn \l__sjtu_page_components_clist - { \UseInstance { sjtu } { \l__sjtu_page_prefix_tl / ##1 } } - \group_end: - \__sjtu_vspace:N \l__sjtu_page_bottom_skip - \clearpage - } -\cs_new:Npn \__sjtu_declare_component:nnn #1#2#3 - { \DeclareInstance { sjtu } {#1/#2} { component } {#3} } -\cs_new:Npn \__sjtu_declare_page:nn #1#2 - { \DeclareInstance { sjtu } {#1} { page } {#2} } +\normalsize +\cs_set_protected:Npe \SJTU@orig@normalsize + { \exp_not:N \fontsize { \f@size } { \f@baselineskip } \exp_not:N \selectfont } +\msg_new:nnn { sjtutex } { baselineskip-invalid } + { Invalid~baselineskip~value~'#1'! \\ Using~default~value~instead. } \cs_new_protected:Npn \__sjtu_set_font_size:nnNn #1#2#3#4 { \cs_set_protected:Npn #3 { \@setfontsize #3 {#1} {#2} #4 } } -\tl_set:Nx \l__sjtu_font_size_tl - { - { \dim_to_decimal:n { \g__sjtu_font_size_dim } } - { \dim_to_decimal:n { \g__sjtu_baseline_skip_dim } } - } \bool_if:NT \g__sjtu_fixed_baselineskip_bool { - \int_case:nn { \g__sjtu_font_size_int } + \dim_compare:nNnTF { \f@size pt } > { \g__sjtu_baseline_skip_dim } { - { 1 } { + \msg_warning:nne { sjtutex } { baselineskip-invalid } + { \dim_to_decimal:n { \g__sjtu_baseline_skip_dim } pt } + } + { + \tl_set:Ne \l__sjtu_font_size_tl + { { \f@size } { \dim_to_decimal:n { \g__sjtu_baseline_skip_dim } } } + \int_case:nn { \@ptsize } + { + { 0 } + { \exp_after:wN \__sjtu_set_font_size:nnNn \l__sjtu_font_size_tl \normalsize { @@ -447,7 +303,20 @@ \let\@listi\@listI } } - { 2 } { + { 1 } + { + \exp_after:wN \__sjtu_set_font_size:nnNn \l__sjtu_font_size_tl + \normalsize + { + \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI + } + } + { 2 } + { \exp_after:wN \__sjtu_set_font_size:nnNn \l__sjtu_font_size_tl \normalsize { @@ -458,22 +327,18 @@ \let\@listi\@listI } } + } + \normalsize } - \normalsize } \NewDocumentCommand \setbaselineskip { m } { \fontsize { \f@size } {#1} \selectfont } -\cs_new_protected:Npn \__sjtu_fontset_error:nn #1#2 - { \msg_error:nnnn { sjtutex } { font-unavailable } {#1} {#2} } \msg_new:nnn { sjtutex } { font-unavailable } - { `#1-font~ =~ #2'~ is~ unavailable~ in~ current~ mode. } -\cs_new_eq:NN \__sjtu_fontset_case:nn \__sjtu_engine_case:nn -\cs_new:Npx \__sjtu_fontset_case:nnn #1#2#3 - { - \__sjtu_engine_case:nn - { \sys_if_output_pdf:TF {#1} {#2} } - {#3} - } + { '#1-font~=~#2'~is~unavailable~in~current~mode. } +\cs_new_protected:Npn \__sjtu_fontset_error:nn #1#2 + { \msg_critical:nnnn { sjtutex } { font-unavailable } {#1} {#2} } +\cs_set_protected:Npn \ctex_fontset_error:n #1 + { \msg_critical:nnnn { sjtutex } { font-unavailable } { cjk } {#1} } \cs_new_protected:Nn \__sjtu_declare_math_symbol:nnNn { \cs_undefine:N #3 @@ -515,9 +380,14 @@ { \tl_gset:Nn \g__sjtu_cjk_font_tl { fandol } } } } +\msg_new:nnn { sjtutex } { invalid-font } + { + Invalid~value~'#1-font~=~\tl_use:c { g__sjtu_ #1 _font_tl }'! \\ + Using~'#2'~instead. + } \cs_new_protected:Npn \__sjtu_load_font:nn #1#2 { - \str_if_eq:eeF { \tl_use:c { g__sjtu_ #1 _font_tl } } { none } + \str_if_eq:vnF { g__sjtu_ #1 _font_tl } { none } { \file_if_exist:nF { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } @@ -529,11 +399,6 @@ { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } } } -\msg_new:nnn { sjtutex } { invalid-font } - { - Invalid~ value~ `#1-font~ =~ \tl_use:c { g__sjtu_ #1 _font_tl }~ '! \\\\ - Using~ `#2'~ instead. - } \cs_new_protected:Nn \__sjtu_load_fontset: { \clist_map_inline:nn @@ -564,25 +429,47 @@ \scpolint\npolint\pointint\sqint\intlarhk\intx \intcap\intcup\upint\lowint } + \clist_map_inline:nn + { amsfonts, amssymb, bm, upgreek } + { \__sjtu_disable_package_load:n {#1} } } \ctex_at_end_preamble:n { - \@ifpackageloaded { unicode-math } - { } { \RequirePackage { bm } } + \IfPackageLoadedF { unicode-math } + { + \RequirePackage { bm } + \cs_if_exist:NF \uppi + { \RequirePackage { upgreek } } + \cs_if_exist:NF \checkmark + { \RequirePackage { amsfonts } } + } } \NewDocumentCommand \CJKrmfamily { } { \CJKfamily { \CJKrmdefault } } \NewDocumentCommand \CJKsffamily { } { \CJKfamily { \CJKsfdefault } } \NewDocumentCommand \CJKttfamily { } { \CJKfamily { \CJKttdefault } } -\__sjtu_unicode_engine_case:nn +\sys_if_engine_xetex:T { \xeCJK_declare_char_class:nn { CJK } { "24EA, "2460->"2473, "3251->"32BF, "25A1 } } +\sys_if_engine_luatex:T { \ltjdefcharrange { 99 } - { "24EA, "2460-"2473, "3251-"32BF, "25A1 } + { "24EA, "2460- "2473, "3251- "32BF, "25A1 } \ltjsetparameter { jacharrange = { +99 } } } +\sys_if_engine_pdftex:TF + { + \cs_new:Npn \__sjtu_unicode_char:n #1 + { + \exp_not:N \Unicode + { \int_div_truncate:nn {#1} { 256 } } + { \int_mod:nn {#1} { 256 } } + } + } + { \cs_new:Npn \__sjtu_unicode_char:n #1 { \tex_Uchar:D #1 \scan_stop: } } +\cs_new_protected:Npn \__sjtu_symbol_const:nn #1#2 + { \tl_const:ce { c__sjtu_symbol_ #1 _tl } { \__sjtu_unicode_char:n {#2} } } \__sjtu_load_fontset: \keys_define:nn { sjtu / name } { @@ -618,11 +505,6 @@ achv .tl_set:N = \SJTU@achvname , achv .initial:n = { List~of~Research~Achievements }, } -\clist_map_inline:Nn \g__sjtu_lang_clist - { \file_input:n { sjtu-name-thesis- #1 .def } } -\clist_map_inline:nn - { title_page, declaration, abstract } - { \__sjtu_define_name:nv {#1} { c__sjtu_name_ #1 _ \g__sjtu_lang_tl _tl } } \geometry { top = 3.5 cm, @@ -657,22 +539,37 @@ header-uppercase .initial:n = { false } } \cs_generate_variant:Nn \__sjtu_nouppercase:n { V } -\cs_new:Nn \__sjtu_thepage: { \thepage } +\tl_set:Nn \__sjtu_the_page_tl { \thepage } +\tl_new:N \__sjtu_the_last_page_tl +\msg_new:nnn { sjtutex } { require-pageslts } + { + Add~'\token_to_str:N \usepackage{pageslts}'~in~your~preamble \\ + to~enable~the~page~number~of~the~last~page. + } \keys_define:nn { sjtu / style } { - page-number .cs_set:Np = \__sjtu_page:n #1 , + page-number .code:n = + { + \regex_match:nnT { \#2 } { #1 } + { + \ctex_if_preamble:TF + { \RequirePackage { pageslts } } + { + \IfPackageLoadedF { pageslts } + { \msg_warning:nn { sjtutex } { require-pageslts } } + } + } + \cs_set:Nn \__sjtu_page:nn { #1 } + } , page-number .initial:n = { {#1} } } \tl_set:Nn \l__sjtu_header_tl { - { - \__sjtu_set_cjk_default_zh: \normalfont - \l__sjtu_info_subject_zh_tl - } + { \songti \l__sjtu_info_subject_zh_tl } } \tl_set:Nn \l__sjtu_leftmark_tl { \leftmark } \tl_set:Nn \l__sjtu_rightmark_tl { \leftmark } -\bool_if:NTF \g__sjtu_twoside_bool +\legacy_if:nTF { @twoside } { \fancyhead [ LO, RE ] { \l__sjtu_header_tl } \fancyhead [ LE ] { \__sjtu_nouppercase:V \l__sjtu_leftmark_tl } @@ -682,8 +579,9 @@ \fancyhead [ L ] { \l__sjtu_header_tl } \fancyhead [ R ] { \__sjtu_nouppercase:V \l__sjtu_rightmark_tl } } -\fancyfoot [ C ] { \__sjtu_page:n { \__sjtu_thepage: } } -\cs_set:Npn \headrule +\fancyfoot [ C ] + { \__sjtu_page:nn { \__sjtu_the_page_tl } { \__sjtu_the_last_page_tl } } +\tl_set:Nn \headrule { \hrule height 2.25 pt width \headwidth \skip_vertical:n { 0.75 pt } @@ -694,7 +592,7 @@ \RenewDocumentCommand \cleardoublepage { } { \clearpage - \bool_if:NT \g__sjtu_twoside_bool + \legacy_if:nT { @twoside } { \int_if_odd:nF \c@page { \hbox:n { } \thispagestyle { empty } \newpage } @@ -759,32 +657,13 @@ indent-first .default:n = { true } , indent-first .initial:n = { true } } -\NewDocumentCommand \SJTU@head { s O{#3} m O{#2} } - { - \CTEX@chapter@break - \IfBooleanTF {#1} - { \tl_if_empty:nF {#4} { \__sjtu_pdf_bookmark:nn { 0 } {#4} } } - { - \__sjtu_phantom_section: - \addcontentsline { toc } { chapter } {#4} - } - \cs_set_eq:NN \__sjtu_orig_ctex_gettitle:n \CTEX@gettitle - \cs_set:Npn \CTEX@gettitle ##1 { \__sjtu_orig_ctex_gettitle:n {#2} } - \chapter* {#3} - \cs_set_eq:NN \CTEX@gettitle \__sjtu_orig_ctex_gettitle:n - \@mkboth { \MakeUppercase {#2} } { \MakeUppercase {#2} } - } -\cs_new:Npn \__sjtu_head_aux_s:nn #1#2 - { \SJTU@head* [#1] {#2} } -\cs_generate_variant:Nn \__sjtu_head_aux_s:nn { nx } \cs_new_eq:NN \__sjtu_pdf_bookmark:nn \use_none:nn \cs_new_eq:NN \__sjtu_phantom_section: \prg_do_nothing: \setlist { nosep } \keys_define:nn { sjtu / style } { equation-font .tl_set:N = \SJTU@style@equation@font , - equation-font .initial:x = \exp_not:N \linespread { } - \exp_not:N \zihao { \g__sjtu_zihao_tl } + equation-font .initial:n = \linespread { } \SJTU@orig@normalsize } \clist_map_inline:nn { @@ -878,7 +757,7 @@ \@addtoreset {#4} {#5} \IfBooleanF {#1} { - \cs_gset:cpo { the #4 } + \exp_args:Nco \cs_gset:Npn { the #4 } { \cs:w the #5 \cs_end: #2 #3 {#4} } } } @@ -888,10 +767,9 @@ \SJTU@counterwithin [ \SJTU@style@eq@num@sep ] { equation } { chapter } \clist_set:Nn \l__sjtu_counter_without_chapter_clist { section, figure, table, equation } -\cs_set_eq:NN \__sjtu_makefnmark_plain: \@makefnmark -\cs_set_eq:NN \__sjtu_thefootnote_plain: \thefootnote -\cs_set_eq:NN \__sjtu_thempfootnote_plain: \thempfootnote -\cs_new:Npn \__sjtu_footnote_number:N #1 +\msg_new:nnn { sjtutex } { circled-number-exceed } + { Circled~number~exceed~50! } +\cs_new:Npn \__sjtu_circled_number:N #1 { \int_compare:nNnTF {#1} < { 21 } { \__sjtu_unicode_char:n { \int_eval:n { "2460 - 1 + #1 } } } @@ -901,20 +779,19 @@ { \int_compare:nNnTF {#1} < { 51 } { \__sjtu_unicode_char:n { \int_eval:n { "32B1 - 36 + #1 } } } - { \msg_warning:nn { sjtutex } { too-many-footnotes } } + { + \msg_warning:nn { sjtutex } { circled-number-exceed } + \int_to_arabic:n {#1} + } } } } -\msg_new:nnn { sjtutex } { too-many-footnotes } - { Too~ many~ footnotes. } -\cs_new:Nn \__sjtu_makefnmark_circled: { \hbox:n { \@thefnmark } } \keys_define:nn { sjtu / style } { fnmark-font .choice: , fnmark-font / haranoaji .code:n = { - \__sjtu_engine_case:nn - { \tl_set_eq:NN \l__sjtu_style_fnmark_font_tl \c_empty_tl } + \__sjtu_if_engine_opentype:TF { \tl_set:Nn \l__sjtu_style_fnmark_font_tl { @@ -926,221 +803,475 @@ ] } } + { \tl_set_eq:NN \l__sjtu_style_fnmark_font_tl \c_empty_tl } } , fnmark-font / unknown .tl_set:N = \l__sjtu_style_fnmark_font_tl , fnmark-font .initial:V = \c_empty_tl } -\cs_new:Nn \__sjtu_thefootnote_circled: - { { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@footnote } } -\cs_new:Nn \__sjtu_thempfootnote_circled: - { { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@mpfootnote } } \keys_define:nn { sjtu / style } { fnmark-style .choice: , fnmark-style / plain .code:n = { - \cs_set_eq:NN \__sjtu_makefnmark: \__sjtu_makefnmark_plain: - \cs_set_eq:NN \thefootnote \__sjtu_thefootnote_plain: - \cs_set_eq:NN \thempfootnote \__sjtu_thempfootnote_plain: + \cs_set:Npn \SJTU@makefnmark + { \hbox:n { \@textsuperscript { \normalfont \@thefnmark } } } + \tl_set:Nn \thefootnote + { \arabic { footnote } } + \tl_set:Nn \thempfootnote + { { \itshape \alph { mpfootnote } } } } , fnmark-style / circled .code:n = { - \cs_set_eq:NN \__sjtu_makefnmark: \__sjtu_makefnmark_circled: - \cs_set_eq:NN \thefootnote \__sjtu_thefootnote_circled: - \cs_set_eq:NN \thempfootnote \__sjtu_thempfootnote_circled: + \cs_set:Npn \SJTU@makefnmark + { \hbox:n { \@thefnmark } } + \tl_set:Nn \thefootnote + { { \l__sjtu_style_fnmark_font_tl \__sjtu_circled_number:N \c@footnote } } + \tl_set:Nn \thempfootnote + { { \l__sjtu_style_fnmark_font_tl \__sjtu_circled_number:N \c@mpfootnote } } } } -\ctex_at_end_preamble:n { - \cs_set_eq:NN \__sjtu_orig_make_fntext:n \@makefntext - \cs_set:Npn \@makefntext #1 - { - \group_begin: - \cs_set_eq:NN \@makefnmark \__sjtu_makefnmark: - \__sjtu_orig_make_fntext:n {#1} - \group_end: - } -} -\cs_new:Npn \__sjtu_info_keys_define:n #1 +\ctex_at_end_preamble:n + { + \cs_set_eq:NN \SJTU@orig@makefntext \@makefntext + \cs_set:Npn \@makefntext #1 + { + \group_begin: + \cs_set_eq:NN \@makefnmark \SJTU@makefnmark + \SJTU@orig@makefntext {#1} + \group_end: + } + } +\tl_set_eq:NN \l__sjtu_lang_tl \g__sjtu_lang_tl +\msg_new:nnn { sjtutex } { lang-validation } + { Invalid~language~argument~'#1'! } +\keys_define:nn { sjtu / private } + { + lang .choice: , + lang .value_required:n = true , + lang .groups:n = { lang } , + lang / unknown .code:n = + { \msg_warning:nnn { sjtutex } { lang-validation } {#1} } + } +\cs_new_protected:Npn \__sjtu_select_language:n + { \keys_set_groups:nnn { sjtu / private } { lang } } +\clist_map_inline:Nn \g__sjtu_lang_clist + { \file_input:n { sjtu-lang- #1 .def } } +\file_input:n { sjtu-scheme- \g__sjtu_lang_tl .def } +\msg_new:nnn { sjtutex } { key-already-defined } + { Key~'#1'~is~already~defined~and~redefination~is~being~ignored. } +\msg_new:nnn { sjtutex } { key-invalid } + { Key~'#1'~is~invalid~and~ignored. } +\msg_new:nnn { sjtutex } { key-needs-two-arguments } + { Key~'#1'~needs~two~arguments~otherwise~ignored. } +\cs_new_protected:Npn \__sjtu_info_keys_define:n #1 { \clist_map_inline:nn { - title, display_title, subject, author, date, - supervisor, assoc_supervisor, department, - co_supervisor, major, degree + title, display_title, subject, date, department, major, + author, supervisor, assoc_supervisor, co_supervisor, degree } { \tl_new:c { l__sjtu_info_ ##1 _ #1 _tl } } \clist_map_inline:nn { keywords, fund } { \clist_new:c { l__sjtu_info_ ##1 _ #1 _clist } } + \bool_if:NTF \g__sjtu_review_bool + { + \seq_set_from_clist:cn { l__sjtu_info_show_ #1 _seq } + { author, id, supervisor, department, major, degree } + } + { \seq_new:c { l__sjtu_info_show_ #1 _seq } } \keys_define:nn { sjtu } { info / #1 .meta:nn = { sjtu / info / #1 } {##1} } \keys_define:nn { sjtu / info } { #1 .meta:nn = { sjtu / info / #1 } {##1} } \keys_define:nn { sjtu / info / #1 } { + display-title .code:n = + { + \tl_set:co { l__sjtu_info_display_title_ #1 _tl } + { \cs:w __sjtu_title_case_aux_ #1 :n \cs_end: {##1} } + } , title .code:n = { \tl_set:cn { l__sjtu_info_title_ #1 _tl } {##1} \tl_if_empty:cT { l__sjtu_info_display_title_ #1 _tl } - { \tl_set:cn { l__sjtu_info_display_title_ #1 _tl } {##1} } + { \keys_set:nn { sjtu / info / #1 } { display-title = {##1} } } } , - display-title .tl_set:c = l__sjtu_info_display_title_ #1 _tl , - subject .tl_set:c = l__sjtu_info_subject_ #1 _tl , - keywords .clist_set:c = l__sjtu_info_keywords_ #1 _clist , - author .tl_set:c = l__sjtu_info_author_ #1 _tl , - id .meta:nn = { sjtu / info } { id = {##1} } , - supervisor .tl_set:c = l__sjtu_info_supervisor_ #1 _tl , - assoc-supervisor .tl_set:c = l__sjtu_info_assoc_supervisor_ #1 _tl , - co-supervisor .tl_set:c = l__sjtu_info_co_supervisor_ #1 _tl , - degree .tl_set:c = l__sjtu_info_degree_ #1 _tl , - department .tl_set:c = l__sjtu_info_department_ #1 _tl , - major .tl_set:c = l__sjtu_info_major_ #1 _tl , - fund .clist_set:c = l__sjtu_info_fund_ #1 _clist , + subject .tl_set:c = { l__sjtu_info_subject_ #1 _tl } , + keywords .clist_set:c = { l__sjtu_info_keywords_ #1 _clist } , + fund .clist_set:c = { l__sjtu_info_fund_ #1 _clist } , + fund .groups:n = { sensitive } , date .meta:nn = { sjtu / info } { date = {##1} } , - display-date .tl_set:c = l__sjtu_info_date_ #1 _tl , + display-date .tl_set:c = { l__sjtu_info_date_ #1 _tl } , + @show+ .code:n = + { + \seq_if_in:cnF { l__sjtu_info_show_ #1 _seq } {##1} + { \seq_put_right:cn { l__sjtu_info_show_ #1 _seq } {##1} } + } , + @show+ .groups:n = { sensitive } , + custom .meta:nn = { sjtu / info / #1 / custom } {##1} , + custom / unknown .code:n = + { + \regex_match:nVTF { \A [a-z] [a-z0-9\-]* \Z } \l_keys_key_str + { + \keys_if_exist:neTF { sjtu / info / #1 } \l_keys_key_str + { + \msg_warning:nne { sjtutex } { key-already-defined } + \l_keys_path_str + } + { + \int_compare:nNnTF { \tl_count:n {##1} } = { 2 } + { + \tl_set_eq:NN \l__sjtu_tmp_tl \l_keys_key_str + \tl_replace_all:Nnn \l__sjtu_tmp_tl { - } { _ } + \tl_set:co { l__sjtu_name_ \l__sjtu_tmp_tl _ #1 _tl } + { \use_i:nn ##1 } + \tl_set:co { l__sjtu_info_ \l__sjtu_tmp_tl _ #1 _tl } + { \use_ii:nn ##1 } + \exp_args:Ne \__sjtu_setup:n + { info / #1 / @show+ = \l__sjtu_tmp_tl } + } + { + \msg_warning:nne { sjtutex } { key-needs-two-arguments } + \l_keys_path_str + } + } + } + { \msg_warning:nne { sjtutex } { key-invalid } \l_keys_path_str } + } } + \clist_map_inline:nn + { + author, supervisor, assoc-supervisor, co-supervisor, + department, major, degree + } + { + \tl_set:Nn \l__sjtu_tmp_tl {##1} + \tl_replace_all:Nnn \l__sjtu_tmp_tl { - } { _ } + \keys_define:ne { sjtu / info / #1 } + { + ##1 .code:n = + { + \exp_not:N \tl_set:cn + { l__sjtu_info_ \l__sjtu_tmp_tl _ #1 _tl } {####1} + \exp_not:N \__sjtu_setup:n + { info / #1 / @show+ = \l__sjtu_tmp_tl } + } + } + } + \clist_map_inline:nn + { author, supervisor, assoc-supervisor, co-supervisor } + { \keys_define:nn { sjtu / info / #1 } { ##1 .groups:n = { sensitive } } } } \tl_new:N \l__sjtu_info_id_zh_tl \keys_define:nn { sjtu / info } - { id .tl_set:N = \l__sjtu_info_id_zh_tl } -\clist_set:Nn \l__sjtu_info_supervisors_clist { supervisor } -\ctex_at_end_preamble:n { - \bool_if:NT \g__sjtu_review_bool + id .code:n = { - \clist_map_inline:Nn \g__sjtu_lang_clist - { - \clist_map_inline:nn - { author, supervisor, assoc_supervisor, co_supervisor } - { \tl_clear:c { l__sjtu_info_ ##1 _ #1 _tl } } - \clist_clear:c { l__sjtu_info_fund_ #1 _clist } - } - \tl_clear:N \l__sjtu_info_id_zh_tl - } + \tl_set:Nn \l__sjtu_info_id_zh_tl {#1} + \__sjtu_setup:n { info / zh / @show+ = id } + } , + id .groups:n = { sensitive } } \clist_map_inline:Nn \g__sjtu_lang_clist - { \file_input:n { sjtu-lang-thesis- #1 .def } } -\file_input:n { sjtu-scheme- \g__sjtu_lang_tl .def } + { \__sjtu_info_keys_define:n {#1} } \keys_define:nn { sjtu / info } { date .code:n = { - \regex_match:neTF { \d+-\d+-\d+ } {#1} + \regex_match:nnTF { \A \d+ \- \d+ \- \d+ \Z } {#1} { \clist_map_inline:Nn \g__sjtu_lang_clist { - \tl_set:cx { l__sjtu_info_date_ ##1 _tl } + \tl_set:ce { l__sjtu_info_date_ ##1 _tl } { \exp_last_unbraced:ce { __sjtu_date_aux_ ##1 :w } #1 \q_stop } } } { - \regex_match:neT { \d+-\d+ } {#1} + \regex_match:nnT { \A \d+ \- \d+ \Z } {#1} { \clist_map_inline:Nn \g__sjtu_lang_clist { - \tl_set:cx { l__sjtu_info_date_ ##1 _tl } + \tl_set:ce { l__sjtu_info_date_ ##1 _tl } { \exp_last_unbraced:ce { __sjtu_date_aux_short_ ##1 :w } #1 \q_stop } } } } } , - date .initial:x = + date .initial:e = { \int_to_arabic:n { \c_sys_year_int } - \int_to_arabic:n { \c_sys_month_int } - \int_to_arabic:n { \c_sys_day_int } } } -\tl_set:Nv \today { l__sjtu_info_date_ \g__sjtu_lang_tl _tl } -\__sjtu_engine_case:nnn +\tl_set_eq:Nc \today { l__sjtu_info_date_ \g__sjtu_lang_tl _tl } +\NewTemplateType { sjtu / element } { 0 } +\DeclareTemplateInterface { sjtu / element } { plain } { 0 } + { + format : tokenlist = \c_empty_tl , + content : tokenlist = \c_empty_tl , + bottom-skip : skip = \c_zero_skip , + align : choice { left, right, center, normal } = center + } +\DeclareTemplateCode { sjtu / element } { plain } { 0 } { - \NewDocumentEnvironment { SJTU@CJK@FTS } { m } + format = \l__sjtu_element_format_tl , + content = \l__sjtu_element_content_tl , + bottom-skip = \l__sjtu_element_bottom_skip , + align = { - \mode_leave_vertical: - \bool_set_false:N \l__sjtu_tmp_bool - \cs_set_eq:NN \SJTU@CJK@FTS@Symbol \CJKsymbol - \cs_set:Npn \CJKsymbol ##1 - { - \bool_if:NTF \l__sjtu_tmp_bool - { \hfil \SJTU@CJK@FTS@Symbol { ##1 } } - { - \SJTU@CJK@FTS@Symbol { ##1 } - \bool_set_true:N \l__sjtu_tmp_bool - } - } - \use:e { \exp_not:N \tex_hbox:D to \dim_eval:n {#1} } - \bgroup \ignorespaces + left = + \cs_set_eq:NN \l__sjtu_element_align: \raggedright , + right = + \cs_set_eq:NN \l__sjtu_element_align: \raggedleft , + center = + \cs_set_eq:NN \l__sjtu_element_align: \centering , + normal = + \cs_set_eq:NN \l__sjtu_element_align: \prg_do_nothing: } - { \egroup } } { - \NewDocumentEnvironment { SJTU@CJK@FTS } { m } - { - \mode_leave_vertical: - \cs_set:Npn \CJKglue - { \skip_horizontal:n { \c_zero_dim plus 1 filll } } - \use:e { \exp_not:N \tex_hbox:D to \dim_eval:n {#1} } - \bgroup \ignorespaces + \AssignTemplateKeys + \group_begin: + \l__sjtu_element_align: + \l__sjtu_element_format_tl + \l__sjtu_element_content_tl + \par + \group_end: + \skip_vertical:N \l__sjtu_element_bottom_skip + \skip_vertical:N \c_zero_skip + } +\NewTemplateType { sjtu / page } { 1 } +\DeclareTemplateInterface { sjtu / page } { title } { 1 } + { + bookmark : tokenlist , + style : tokenlist = empty , + format : tokenlist = \linespread { } \selectfont , + prefix : tokenlist , + elements : commalist + } +\DeclareTemplateCode { sjtu / page } { title } { 1 } + { + bookmark = \l__sjtu_page_bookmark_tl , + style = \l__sjtu_page_style_tl , + format = \l__sjtu_page_format_tl , + prefix = \l__sjtu_page_prefix_tl , + elements = \l__sjtu_page_elements_clist + } + { + \tl_set_eq:NN \l__sjtu_page_bookmark_tl \c_novalue_tl + \AssignTemplateKeys + \group_begin: + \__sjtu_select_language:n {#1} + \clist_gset_eq:Nc \l__sjtu_info_fund_clist + { l__sjtu_info_fund_ \l__sjtu_lang_tl _clist } + \legacy_if:nTF { @openright } + { \cleardoublepage } { \clearpage } + \exp_args:No \tl_if_novalue:nF { \l__sjtu_page_bookmark_tl } + { \__sjtu_pdf_bookmark:nn { 0 } { \l__sjtu_page_bookmark_tl } } + \exp_args:No \thispagestyle { \l__sjtu_page_style_tl } + \l__sjtu_page_format_tl + \clist_map_inline:Nn \l__sjtu_page_elements_clist + { \UseInstance { sjtu / element } { \l__sjtu_page_prefix_tl / ##1 } } + \group_end: + \clearpage + } +\cs_new_protected:Npn \__sjtu_declare_element_instance:nnn #1#2#3 + { \DeclareInstance { sjtu / element } {#1/#2} { plain } {#3} } +\cs_new_protected:Npn \__sjtu_declare_page_instance:nnn #1#2 + { \DeclareInstance { sjtu / page } {#1} { title } {#2} } +\tl_set:Nn \SJTU@CT@W@width { 5 em } +\newcolumntype { \SJTU@CT@W } [ 1 ] + { + w {#1} { \SJTU@CT@W@width } + @{ \tl_use:c { c__sjtu_name_info_sep_ \l__sjtu_lang_tl _tl } } + } +\newcolumntype { \SJTU@CT@R } + { r @{ \tl_use:c { c__sjtu_name_info_sep_ \l__sjtu_lang_tl _tl } } } +\newcolumntype { \SJTU@CT@L } + { >{ \linespread { 0.75 } \normalfont } l } +\cs_new:Npn \__sjtu_info_table_row:nn #1#2 + { + \exp_not:n {#1} + & + \exp_not:N \hbox:n + { + \exp_not:N \tabular [ t ] { @{} l @{} } + \exp_not:n {#2} + \exp_not:N \endtabular } - { \egroup } } +\cs_generate_variant:Nn \__sjtu_info_table_row:nn { vv } +\cs_new_protected:Npn \__sjtu_title_page_info_table:n #1 + { + \group_begin: + \clist_clear:N \l__sjtu_tmp_clist + \seq_map_inline:cn { l__sjtu_info_show_ \l__sjtu_lang_tl _seq } + { + \bool_lazy_all:nT + { + { \tl_if_exist_p:c { l__sjtu_name_ ##1 _ \l__sjtu_lang_tl _tl } } + { \tl_if_exist_p:c { l__sjtu_info_ ##1 _ \l__sjtu_lang_tl _tl } } + } + { + \clist_put_right:Ne \l__sjtu_tmp_clist + { + \__sjtu_info_table_row:vv + { l__sjtu_name_ ##1 _ \l__sjtu_lang_tl _tl } + { l__sjtu_info_ ##1 _ \l__sjtu_lang_tl _tl } + } + } + } + \tl_set:Nn \arraystretch { 1 } + \int_set_eq:NN \hbadness \c_max_int + \tabular {#1} + \clist_use:Nn \l__sjtu_tmp_clist { \\ } + \endtabular + \group_end: + } +\cs_new:Npn \ps@SJTU@fund { - \NewDocumentEnvironment { SJTU@CJK@FTS } { m } + \ps@empty + \tl_set:Nn \@oddfoot { - \mode_leave_vertical: - \ltjsetparameter { kanjiskip = { \c_zero_dim plus 1 filll } } - \use:e { \exp_not:N \tex_hbox:D to \dim_eval:n {#1} } - \bgroup \ignorespaces + \hfil + \minipage [ t ] { \textwidth } + \centering \zihao { - 5 } + \clist_use:Nn \l__sjtu_info_fund_clist { \par } + \endminipage + \hfil } - { \egroup } + \tl_set_eq:NN \@evenfoot \@oddfoot } -\newcolumntype { \SJTU@CT@D } [ 1 ] - { > { \begin { SJTU@CJK@FTS } {#1} } c < { \end { SJTU@CJK@FTS } } } -\cs_new:Npn \__sjtu_title_page_info_i:nnn #1#2#3 +\clist_map_inline:nn { - \clist_clear:N \l__sjtu_tmp_clist - \clist_map_inline:nn {#3} + { logo } { - \clist_put_right:Nx \l__sjtu_tmp_clist + content = { - \exp_not:o { \cs:w c__sjtu_name_ ##1 _ #1 _tl \cs_end: } - & - \exp_not:N \hbox:n - { - \exp_not:N \tabular [ t ] { @{} l @{} } - \exp_not:o { \cs:w l__sjtu_info_ ##1 _ #1 _tl \cs_end: } - \exp_not:N \endtabular - } + \includegraphics [ width = 3 cm ] + { sjtu-vi-badge-reg-red.pdf } } + } , + { subject } + { + format = \zihao { -2 } \setbaselineskip { 30 bp } , + content = \tl_use:c { l__sjtu_info_subject_ \l__sjtu_lang_tl _tl } , + bottom-skip = \c_zero_dim plus 1 fill + } , + { title } + { + format = \zihao { 2 } \setbaselineskip { 36 bp } \bfseries , + content = \tl_use:c { l__sjtu_info_display_title_ \l__sjtu_lang_tl _tl } , + bottom-skip = 30 bp plus 1 fill + } , + { info } + { + format = \zihao { 4 } \setbaselineskip { 30 bp } \heiti , + content = \__sjtu_title_page_info_table:n + { \SJTU@CT@W { s } \SJTU@CT@L } , + bottom-skip = 30 bp + } , + { date } + { + format = \zihao { 4 } \setbaselineskip { 30 bp } \bfseries , + content = \tl_use:c { l__sjtu_info_date_ \l__sjtu_lang_tl _tl } , } - \group_begin: - \tl_set:Nn \arraystretch { 1 } - \tabular {#2} - \clist_use:Nn \l__sjtu_tmp_clist { \\ } - \endtabular - \group_end: } -\cs_new:Npn \__sjtu_title_page_info_ii:n #1 + { \__sjtu_declare_element_instance:nnn { title a } #1 } +\__sjtu_declare_page_instance:nnn { title a } { - \tl_use:c { l__sjtu_info_department_ #1 _tl } - \skip_vertical:N \c_zero_skip - \tl_use:c { c__sjtu_name_univ_ #1 _tl } - \skip_vertical:N \c_zero_skip - \tl_use:c { c__sjtu_name_address_ #1 _tl } - \skip_vertical:N \c_zero_skip - \tl_use:c { l__sjtu_info_date_ #1 _tl } + bookmark = \tl_use:c { c__sjtu_name_title_page_ \g__sjtu_lang_tl _tl } , + style = SJTU@fund , + prefix = title a , + elements = { logo, subject, title, info, date } } -\cs_generate_variant:Nn \__sjtu_title_page_info_i:nnn { nxx } -\RenewDocumentCommand \maketitle { } +\clist_map_inline:nn { - \clist_map_inline:nn - { assoc_supervisor, co_supervisor } + { subject } + { + format = \zihao { 4 } \setbaselineskip { 24 bp } \bfseries , + content = \tl_use:c { l__sjtu_info_subject_ \l__sjtu_lang_tl _tl } , + bottom-skip = \c_zero_dim plus 1 fill + } , + { title } { - \tl_if_empty:cF { l__sjtu_info_ ##1 _zh_tl } - { \clist_put_right:Nn \l__sjtu_info_supervisors_clist {##1} } + format = \zihao { -2 } \setbaselineskip { 30 bp } \bfseries , + content = \tl_use:c { l__sjtu_info_display_title_ \l__sjtu_lang_tl _tl } , + bottom-skip = \c_zero_dim plus 1 fill + } , + { info } + { + format = \zihao { 3 } \setbaselineskip { 30 bp } \bfseries , + content = \__sjtu_title_page_info_table:n + { \SJTU@CT@R \SJTU@CT@L } , + bottom-skip = 30 bp plus 1 fill + } , + { date } + { + format = \zihao { 3 } \setbaselineskip { 30 bp } , + content = + { + \tl_use:c { l__sjtu_info_department_ \l__sjtu_lang_tl _tl } + \skip_vertical:N \c_zero_skip + \tl_use:c { c__sjtu_name_univ_ \l__sjtu_lang_tl _tl } + \skip_vertical:N \c_zero_skip + \tl_use:c { c__sjtu_name_address_ \l__sjtu_lang_tl _tl } + \skip_vertical:N \c_zero_skip + \tl_use:c { l__sjtu_info_date_ \l__sjtu_lang_tl _tl } + } } + } + { \__sjtu_declare_element_instance:nnn { title b } #1 } +\__sjtu_declare_page_instance:nnn { title b } + { + prefix = title b , + style = SJTU@fund , + elements = { subject, title, info, date } + } +\clist_map_inline:Nn \g__sjtu_lang_clist + { \file_input:n { sjtu-thesis- #1 .def } } +\RenewDocumentCommand \maketitle { } + { \clist_map_inline:Nn \g__sjtu_lang_clist - { \UseInstance { sjtu } { title / ##1 } } + { \UseInstance { sjtu / page } { title / ##1 } { ##1 } } + } +\tl_const:Nn \c__sjtu_orig_decl_text_zh_tl + { + 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工 + 作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人 + 或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集 + 体,均已在文中以明确方式标明。本人完全知晓本声明的法律后果由本人承 + 担。 + } +\tl_const:Nn \c__sjtu_auth_decl_text_zh_tl + { + 本人同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许 + 论文被查阅和借阅。 \par + \vskip 6 bp + \noindent + 本学位论文属于: \par + { \c__sjtu_symbol_white_square_tl } \, \textbf { 公开论文 } \par + { \c__sjtu_symbol_white_square_tl } \, \textbf { 内部论文 }, + 保密 \, { \c__sjtu_symbol_white_square_tl } \, 1 \, 年 \, / + \, { \c__sjtu_symbol_white_square_tl } \, 2 \, 年 \, / + \, { \c__sjtu_symbol_white_square_tl } \, 3 \, 年, + 过保密期后适用本授权书。 \par + { \c__sjtu_symbol_white_square_tl } \, \textbf { 秘密论文 }, + 保密 \, \underline { \hspace { 2 em } } \, 年(不超过~ 10~ 年), + 过保密期后适用本授权书。 \par + { \c__sjtu_symbol_white_square_tl } \, \textbf { 机密论文 }, + 保密 \, \underline { \hspace { 2 em } } \, 年(不超过~ 20~ 年), + 过保密期后适用本授权书。 \par + \hspace { 6 em }(请在以上方框内选择打“ \ensuremath { \checkmark } ”) + } +\tl_const:Nn \c__sjtu_signature_text_zh_tl + { + 签名: \\ + 日期: \hspace { \stretch { 3 } } 年 + \hspace { \stretch { 2 } } 月 + \hspace { \stretch { 2 } } 日 } \cs_new_protected:Npn \__sjtu_signature:N #1 { @@ -1215,46 +1346,104 @@ } } { - \__sjtu_declare_component:nnn { copyright } #1 + \__sjtu_declare_element_instance:nnn { copyright } #1 } -\__sjtu_declare_page:nn { copyright } +\__sjtu_declare_page_instance:nnn { copyright } { - bookmark = true , - bookmark-text = \c__sjtu_name_declaration_tl , - format = \linespread { } \__sjtu_set_language_zh: , - prefix = copyright , - components = + bookmark = \tl_use:c { c__sjtu_name_declaration_ \g__sjtu_lang_tl _tl } , + prefix = copyright , + elements = { orig / title, orig / text, orig / sign, auth / title, auth / text, auth / sign } } +\tl_new:N \l__sjtu_copyright_page_file_tl +\keys_define:nn { sjtu / private / copyright } + { + file .tl_set:N = \l__sjtu_copyright_page_file_tl , + file .value_required:n = true , + filename .meta:n = { file = #1 } + } \msg_new:nnn { sjtutex } { require-pdfpages } { - Add~"\token_to_str:N \usepackage{pdfpages}"~ in~ your~ preamble \\ - before~ inserting~ pages~ of~ external~ PDF. + Add~'\token_to_str:N \usepackage{pdfpages}'~in~your~preamble \\ + before~inserting~pages~of~external~PDF. } \NewDocumentCommand \copyrightpage { O{ } } { \bool_if:NF \g__sjtu_review_bool { - \tl_if_blank:nTF {#1} - { \UseInstance { sjtu } { copyright } } + \group_begin: + \keys_set_known:nnN { sjtu / private / copyright } + {#1} \l__sjtu_tmp_tl + \tl_if_empty:NTF \l__sjtu_copyright_page_file_tl + { \UseInstance { sjtu / page } { copyright } { zh } } + { + \cs_if_exist:NTF \includepdf + { + \legacy_if:nTF { @openright } + { \cleardoublepage } { \clearpage } + \__sjtu_pdf_bookmark:nn { 0 } { \c__sjtu_name_declaration_tl } + \tl_set_rescan:NnV \l__sjtu_tmp_tl { } \l__sjtu_tmp_tl + \exp_args:NNo \includepdf [ \l__sjtu_tmp_tl ] + { \l__sjtu_copyright_page_file_tl } + } + { + \msg_warning:nn { sjtutex } { require-pdfpages } + \UseInstance { sjtu / page } { copyright } { zh } + } + } + \group_end: + } + } +\bool_new:N \l__sjtu_heading_numbering_bool +\bool_new:N \l__sjtu_heading_in_toc_bool +\tl_new:N \l__sjtu_heading_title_tl +\tl_new:N \l__sjtu_heading_marking_tl +\AddToHook { cmd / mainmatter / after } + { \bool_set_true:N \l__sjtu_heading_in_toc_bool } +\keys_define:nn { sjtu / private } + { + intoc .value_forbidden:n = true, + intoc .groups:n = { heading } , + intoc .code:n = { \bool_set_true:N \l__sjtu_heading_in_toc_bool } , + notintoc .value_forbidden:n = true, + notintoc .groups:n = { heading } , + notintoc .code:n = { \bool_set_false:N \l__sjtu_heading_in_toc_bool } , + title .tl_set:N = \l__sjtu_heading_title_tl , + title .groups:n = { heading } , + marking .tl_set:N = \l__sjtu_heading_marking_tl , + marking .groups:n = { heading } + } +\NewDocumentCommand \SJTU@heading { O{#2} m } + { + \bool_if:nTF + { \l__sjtu_heading_numbering_bool && \l__sjtu_heading_in_toc_bool } + { \chapter [#1] {#2} } + { + \CTEX@chapter@break + \bool_if:NTF \l__sjtu_heading_in_toc_bool { - \cs_if_exist:NTF \includepdf - { - \bool_if:NTF \g__sjtu_openright_bool - { \cleardoublepage } { \clearpage } - \__sjtu_pdf_bookmark:nn { 0 } { \c__sjtu_name_declaration_tl } - \includepdf {#1} - } - { - \msg_warning:nn { sjtutex } { require-pdfpages } - \UseInstance { sjtu } { copyright } - } + \__sjtu_phantom_section: + \addcontentsline { toc } { chapter } {#1} } + { \__sjtu_pdf_bookmark:nn { 0 } {#1} } + \chapter* {#2} + \CTEX@gettitle {#1} + \@mkboth { \MakeUppercase {#1} } { \MakeUppercase {#1} } } } +\cs_new_protected:Npn \__sjtu_heading:nn #1#2 + { \SJTU@heading [#1] {#2} } +\cs_generate_variant:Nn \__sjtu_heading:nn { VV } +\cs_new_protected:Npn \__sjtu_make_heading:n #1 + { + \tl_set_eq:NN \l__sjtu_heading_marking_tl \c_novalue_tl + \keys_set_groups:nnn { sjtu / private } { heading } {#1} + \__sjtu_heading:VV + \l__sjtu_heading_marking_tl \l__sjtu_heading_title_tl + } \keys_define:nn { sjtu / style } { keywords-format .choice: , @@ -1264,56 +1453,33 @@ { \cs_set:Nn \__sjtu_keywords_format:n { \@hangfrom { \bfseries ##1 } } } , keywords-format .initial:n = { plain } } -\DeclareDocumentEnvironment { abstract } { O{ zh } +b } +\DeclareDocumentEnvironment { abstract } { O{ } } { - \__sjtu_if_lang_valid:nTF {#1} - { - \use:c { __sjtu_set_language_ #1 : } - \exp_args:Nv \SJTU@head { c__sjtu_name_abstract_ #1 _tl } - #2 - \clist_if_empty:cF { l__sjtu_info_keywords_ #1 _clist } - { - \par \mode_leave_vertical: \par - \__sjtu_keywords_format:n - { - \tl_use:c { c__sjtu_name_keywords_ #1 _tl } - \tl_use:c { c__sjtu_name_info_sep_ #1 _tl } - } - \clist_use:cv { l__sjtu_info_keywords_ #1 _clist } - { c__sjtu_name_item_sep_ #1 _tl } - \par - } - } - { \msg_error:nnn { sjtutex } { lang-validation } {#1} } - } { } -\DeclareDocumentEnvironment { abstract* } { O{ zh } +b } + \__sjtu_select_language:n {#1} + \tl_set_eq:Nc \l__sjtu_heading_title_tl + { c__sjtu_name_abstract_ \l__sjtu_lang_tl _tl } + \__sjtu_make_heading:n {#1} + } { - \__sjtu_if_lang_valid:nTF {#1} + \clist_if_empty:cF { l__sjtu_info_keywords_ \l__sjtu_lang_tl _clist } { - \use:c { __sjtu_set_language_ #1 : } - \exp_args:NNv \SJTU@head* { c__sjtu_name_abstract_ #1 _tl } - #2 - \clist_if_empty:cF { l__sjtu_info_keywords_ #1 _clist } + \par \mode_leave_vertical: \par + \__sjtu_keywords_format:n { - \par \mode_leave_vertical: \par - \__sjtu_keywords_format:n - { - \tl_use:c { c__sjtu_name_keywords_ #1 _tl } - \tl_use:c { c__sjtu_name_info_sep_ #1 _tl } - } - \clist_use:cv { l__sjtu_info_keywords_ #1 _clist } - { c__sjtu_name_item_sep_ #1 _tl } - \par + \tl_use:c { c__sjtu_name_keywords_ \l__sjtu_lang_tl _tl } + \tl_use:c { c__sjtu_name_info_sep_ \l__sjtu_lang_tl _tl } } + \clist_use:cv { l__sjtu_info_keywords_ \l__sjtu_lang_tl _clist } + { c__sjtu_name_item_sep_ \l__sjtu_lang_tl _tl } + \par } - { \msg_error:nnn { sjtutex } { lang-validation } {#1} } - } { } -\DeclareDocumentCommand \tableofcontents { s } + } +\DeclareDocumentCommand \tableofcontents { O{ } } { - \IfBooleanTF {#1} - { \SJTU@head* { \contentsname } } - { \SJTU@head { \contentsname } } - \@starttoc { toc } + \group_begin: + \__sjtu_make_heading:n { title = \contentsname, #1 } + \@starttoc { toc } + \group_end: } \tl_set:Nn \SJTU@leaders { \titlerule* [ 4bp ] { . } } \contentsmargin [ 2.55 em ] { 0 pt } @@ -1329,12 +1495,12 @@ [ 4 em ] { } { \contentspush { \thecontentslabel \enskip } } { } { \SJTU@leaders \thecontentspage } -\NewDocumentCommand \SJTU@listof { m m s } +\NewDocumentCommand \SJTU@listof { m m O{ } } { - \IfBooleanTF {#3} - { \SJTU@head* {#1} } - { \SJTU@head {#1} } - \exp_args:Nv \@starttoc { ext@ #2 } + \group_begin: + \__sjtu_make_heading:n { title = #1, #3 } + \exp_args:Nv \@starttoc { ext@ #2 } + \group_end: } \cs_new_protected:Npn \__sjtu_new_list_of:Nnnn #1#2#3#4 { @@ -1350,46 +1516,49 @@ { \figurename } { \listfigurename } \__sjtu_new_list_of:Nnnn \listoftables { table } { \tablename } { \listtablename } -\NewDocumentEnvironment { abbreviation } { O{ \SJTU@abbrname } } +\NewDocumentEnvironment { abbreviation } { O{ } } { - \chapter {#1} + \bool_set_true:N \l__sjtu_heading_numbering_bool + \__sjtu_make_heading:n { title = \SJTU@abbrname, #1 } \tl_clear:N \SJTU@style@float@font } { } -\NewDocumentEnvironment { abbreviation* } { O{ \SJTU@abbrname } } +\NewDocumentEnvironment { nomenclature } { O{ } } { - \SJTU@head* {#1} + \bool_set_true:N \l__sjtu_heading_numbering_bool + \__sjtu_make_heading:n { title = \SJTU@nomname, #1 } \tl_clear:N \SJTU@style@float@font } { } -\NewDocumentEnvironment { nomenclature } { O{ \SJTU@nomname } } - { - \chapter {#1} - \tl_clear:N \SJTU@style@float@font - } { } -\NewDocumentEnvironment { nomenclature* } { O{ \SJTU@nomname } } - { - \SJTU@head* {#1} - \tl_clear:N \SJTU@style@float@font - } { } -\NewDocumentEnvironment { acknowledgements } { O{ \SJTU@ackname } +b } +\NewDocumentEnvironment { acknowledgements } { O{ } +b } { \bool_if:NF \g__sjtu_review_bool { - \SJTU@head {#1} + \__sjtu_select_language:n {#1} + \__sjtu_make_heading:n { title = \SJTU@ackname, #1 } #2 } } { } \newcounter { SJTU@bib } -\NewDocumentEnvironment { @bibliolist } { m } +\bool_new:N \l__sjtu_bibliolist_resume_bool +\keys_define:nn { sjtu / private / bibliolist } + { + resume .value_forbidden:n = true, + resume .code:n = + { \bool_set_true:N \l__sjtu_bibliolist_resume_bool } + } +\msg_new:nnn { sjtutex } { empty-environment } + { Empty~'#1'~environment. } +\NewDocumentEnvironment { @bibliolist } { m m } { + \keys_set:nn { sjtu / private / bibliolist } {#1} \cs_if_exist_use:N \bibfont \list { - \tl_if_blank:nTF {#1} + \tl_if_blank:nTF {#2} { \hfill } { \@biblabel { \arabic{ SJTU@bib } } } } { - \tl_if_blank:nTF {#1} + \tl_if_blank:nTF {#2} { \skip_if_exist:NTF \bibhang { \dim_set_eq:NN \leftmargin \bibhang } @@ -1397,7 +1566,7 @@ \dim_set:Nn \itemindent { - \leftmargin } } { - \__sjtu_dim_set_to_wd:Nn \labelwidth { \@biblabel {#1} } + \__sjtu_dim_set_to_wd:Nn \labelwidth { \@biblabel {#2} } \dim_set_eq:NN \leftmargin \labelwidth \dim_add:Nn \leftmargin { \labelsep } } @@ -1415,9 +1584,11 @@ } } \@nmbrlisttrue - \tl_set:Nn \@listctr { SJTU@bib } - \cs_set:Npn \p@SJTU@bib { } - \cs_set:Npn \theSJTU@bib { \arabic { SJTU@bib } } + \tl_set:Nn \@listctr { SJTU@bib } + \tl_clear:N \p@SJTU@bib + \bool_if:NF \l__sjtu_bibliolist_resume_bool + { \setcounter { SJTU@bib } { 0 } } + \tl_set:Nn \theSJTU@bib { \arabic { SJTU@bib } } } \sloppy \int_set:Nn \clubpenalty { 4000 } @@ -1426,87 +1597,68 @@ \char_set_sfcode:nn { `\. } { 1000 } } { - \cs_set:Npn \@noitemerr + \tl_set:Nn \@noitemerr { \msg_warning:nnn { sjtutex } { empty-environment } { bibliolist } } \endlist } -\msg_new:nnn { sjtutex } { empty-environment } - { Empty~ `#1'~ environment. } -\bool_new:N \l__sjtu_achievements_bool -\NewDocumentEnvironment { achievements } { O{ \SJTU@achvname } } +\NewDocumentEnvironment { achievements } { O{ } } { - \SJTU@head {#1} - \setcounter { SJTU@bib } { 0 } - \bool_set_true:N \l__sjtu_achievements_bool + \__sjtu_select_language:n {#1} + \__sjtu_make_heading:n { title = \SJTU@achvname, #1 } } { } -\NewDocumentEnvironment { bibliolist } { m +b } +\NewDocumentEnvironment { bibliolist } { O{ } m +b } { - \bool_if:NF \l__sjtu_achievements_bool - { - \msg_error:nnnn { sjtutex } { environment-validation } - { bibliolist } { achievements } - } \bool_if:NF \g__sjtu_review_bool { - \cs_set:Npn \@noitemerr { } - \begin { @bibliolist } {#1} - #2 + \begin { @bibliolist } {#1} {#2} + #3 \end { @bibliolist } } } { } -\NewDocumentEnvironment { bibliolist* } { m +b } +\NewDocumentEnvironment { bibliolist* } { O{ } m +b } { - \bool_if:NF \l__sjtu_achievements_bool - { - \msg_error:nnnn { sjtutex } { environment-validation } - { bibliolist* } { achievements } - } \bool_if:NT \g__sjtu_review_bool { - \cs_set:Npn \@noitemerr { } - \begin { @bibliolist } {#1} - #2 + \begin { @bibliolist } {#1} {#2} + #3 \end { @bibliolist } } } { } -\msg_new:nnn { sjtutex } { environment-validation } - { `#1'~ is~ only~ valid~ in~ `#2'~ environment. } -\NewDocumentEnvironment { resume } { O{ \SJTU@resumename } +b } +\NewDocumentEnvironment { resume } { O{ } +b } { \bool_if:NF \g__sjtu_review_bool { - \SJTU@head {#1} + \__sjtu_select_language:n {#1} + \__sjtu_make_heading:n { title = \SJTU@resumename, #1 } #2 } } { } -\NewDocumentEnvironment { digest } { O{ en } +b } +\NewHook { sjtutex / digest } +\NewDocumentEnvironment { digest } { O{ } +b } { - \__sjtu_if_lang_valid:nTF {#1} + \AtEndDocument { - \AtEndDocument - { - \use:c { __sjtu_set_language_ #1 : } - \bool_if:NTF \g__sjtu_openright_bool - { \cleardoublepage } { \clearpage } - \pagenumbering { roman } - \cs_gset:Nn \__sjtu_thepage: { \arabic { page } } - \cs_gset_eq:NN \addcontentsline \use_none:nnn - \clist_map_inline:Nn \l__sjtu_counter_without_chapter_clist - { - \counterwithout {##1} { chapter } - \setcounter {##1} { 0 } - } - \__sjtu_head_aux_s:nx { \SJTU@digestname } - { - \exp_not:N \MakeUppercase - { \exp_not:v { l__sjtu_info_title_ #1 _tl } } - } - #2 - } + \group_begin: + \__sjtu_select_language:n { en, #1 } + \legacy_if:nTF { @openright } + { \cleardoublepage } { \clearpage } + \pagenumbering { roman } + \tl_gset:Nn \__sjtu_the_page_tl { \arabic { page } } + \UseHook { sjtutex / digest } + \cs_gset_eq:NN \addcontentsline \use_none:nnn + \clist_map_inline:Nn \l__sjtu_counter_without_chapter_clist + { + \counterwithout {##1} { chapter } + \setcounter {##1} { 0 } + } + \tl_set_eq:Nc \l__sjtu_heading_title_tl + { l__sjtu_info_display_title_ \l__sjtu_lang_tl _tl } + \__sjtu_make_heading:n { marking = \SJTU@digestname, #1, notintoc } + #2 + \group_end: } - { \msg_error:nnn { sjtutex } { lang-validation } {#1} } } { } -\NewDocumentCommand \sjtusetup { } { \keys_set:nn { sjtu } } +\NewDocumentCommand \sjtusetup { } { \__sjtu_setup:n } \keys_define:nn { sjtu } { style .meta:nn = { sjtu / style } {#1} , @@ -1565,20 +1717,23 @@ pdfdisplaydoctitle = true } \int_new:N \g__sjtu_bookmark_int - \cs_gset_protected:Npn \__sjtu_pdf_bookmark:nn #1#2 + \cs_set_protected:Npn \__sjtu_pdf_bookmark:nn #1#2 { \phantomsection \int_gincr:N \g__sjtu_bookmark_int \pdfbookmark [#1] {#2} { sjtubookmark. \int_use:N \g__sjtu_bookmark_int } } - \cs_gset_eq:NN \__sjtu_phantom_section: \phantomsection + \cs_set_eq:NN \__sjtu_phantom_section: \phantomsection + \DeclareExpandableDocumentCommand + { \__sjtu_pdfstring_newline:w } { s o m } {#3} \pdfstringdefDisableCommands { - \cs_set_eq:NN \\ \prg_do_nothing: - \cs_set_eq:NN \quad \c_empty_tl - \cs_set_eq:NN \qquad \c_empty_tl + \cs_set_eq:NN \\ \__sjtu_pdfstring_newline:w \cs_set_eq:NN \hspace \use_none:n + \cs_set_eq:NN \zihao \use_none:n + \tl_set_eq:NN \quad \c_empty_tl + \tl_set_eq:NN \qquad \c_empty_tl } \ctex_after_end_preamble:n { @@ -1591,6 +1746,17 @@ } } } +\ctex_at_end_package:nn { pageslts } + { + \pagenumbering { Alph } + \tl_set:Nn \__sjtu_the_last_page_tl + { \lastpageref { pagesLTS.\pagesLTS@pnc } } + \AddToHook { sjtutex / digest } + { + \tl_gset:Nn \__sjtu_the_last_page_tl + { \lastpageref { pagesLTS.roman.local } } + } + } \ctex_at_end_package:nn { threeparttable } { \tl_put_right:Nn \TPTnoteSettings { \footnotesize } } \ctex_at_end_package:nn { longtable } @@ -1605,30 +1771,33 @@ { \cs_if_exist:cF {##1} { - \exp_args:Nnv \newtheorem {##1} { c__sjtu_name_ ##1 _tl } - [ chapter ] + \exp_args:Nnv \newtheorem {##1} + { c__sjtu_name_ ##1 _ \g__sjtu_lang_tl _tl } [ chapter ] } } \clist_map_inline:nn { remark, solution } { \cs_if_exist:cF {##1} - { \exp_args:NNnv \newtheorem* {##1} { c__sjtu_name_ ##1 _tl } } + { + \exp_args:NNnv \newtheorem* {##1} + { c__sjtu_name_ ##1 _ \g__sjtu_lang_tl _tl } + } } } \ctex_at_begin_package:nn { amsthm } { \cs_if_exist:NT \openbox { - \cs_new_eq:NN \__sjtu_save_openbox: \openbox + \cs_new_eq:NN \SJTU@orig@openbox \openbox \cs_undefine:N \openbox } } \ctex_at_end_package:nn { amsthm } { \__sjtu_cs_provide_eq:NN \QED \openbox - \cs_if_exist:NT \__sjtu_save_openbox: - { \cs_set_eq:NN \openbox \__sjtu_save_openbox: } + \cs_if_exist:NT \SJTU@orig@openbox + { \cs_set_eq:NN \openbox \SJTU@orig@openbox } \tl_set:Nn \qedsymbol { \ensuremath { \QED } } \RenewDocumentEnvironment { proof } { O{ \proofname } } { @@ -1646,28 +1815,28 @@ \newtheoremstyle { sjtu } { } { } { \SJTU@style@thm@body@font } { } { \SJTU@style@thm@header@font } { } { \ccwd } { } - } -\ctex_at_end_preamble:n - { - \@ifpackageloaded { amsthm } + \__sjtu_disable_package_load:n { ntheorem } + \ctex_at_end_preamble:n { \theoremstyle { sjtu } \__sjtu_new_theorems: } + } +\ctex_at_end_package:nn { ntheorem } + { + \__sjtu_disable_package_load:n { amsthm } + \ctex_at_end_preamble:n { - \@ifpackageloaded { ntheorem } - { - \__sjtu_cs_provide_eq:NN \QED \c_empty_tl - \theoremheaderfont { \SJTU@style@thm@header@font } - \theorembodyfont { \SJTU@style@thm@body@font } - \theoremseparator { \enskip } - \theoremsymbol { \ensuremath { \QED } } - \qedsymbol { \ensuremath { \QED } } - \cs_if_exist:NF \proof - { \newtheorem* { proof } { \proofname } } - \theoremsymbol { } - \__sjtu_new_theorems: - } { } + \__sjtu_cs_provide_eq:NN \QED \c_empty_tl + \theoremheaderfont { \SJTU@style@thm@header@font } + \theorembodyfont { \SJTU@style@thm@body@font } + \theoremseparator { \enskip } + \theoremsymbol { \ensuremath { \QED } } + \qedsymbol { \ensuremath { \QED } } + \cs_if_exist:NF \proof + { \newtheorem* { proof } { \proofname } } + \theoremsymbol { } + \__sjtu_new_theorems: } } \ctex_at_end_package:nn { thmtools } @@ -1682,13 +1851,16 @@ \exp_args:NV \contentsuse \thmt@envname { loe } } \cs_set:Npn \thmtlo@chaptervspacehack { } - \RenewDocumentCommand \listoftheorems { s O{ } } + \RenewDocumentCommand \listoftheorems { O{ } } { \group_begin: - \setlisttheoremstyle {#2} - \IfBooleanTF {#1} - { \SJTU@head* { \listtheoremname } } - { \SJTU@head { \listtheoremname } } + \tl_set_eq:NN \l__sjtu_heading_marking_tl \c_novalue_tl + \keys_set_groups:nnnN { sjtu / private } { heading } + { title = \listtheoremname, #1 } \l__sjtu_tmp_tl + \tl_set_rescan:NnV \l__sjtu_tmp_tl { } \l__sjtu_tmp_tl + \__sjtu_heading:VV + \l__sjtu_heading_marking_tl \l__sjtu_heading_title_tl + \exp_args:No \setlisttheoremstyle { \l__sjtu_tmp_tl } \cs_set:Npn \contentsline ##1 { \use:c { thmt@contentsline@ ##1 } {##1} } \clist_map_inline:Nn \thmt@allenvs @@ -1721,10 +1893,10 @@ { \fname@algorithm } { \listalgorithmname } } \ctex_at_begin_package:nn { algorithm2e } - { \cs_set_eq:NN \__sjtu_save_chapter:w \@chapter } + { \cs_set_eq:NN \SJTU@orig@at@chapter \@chapter } \ctex_at_end_package:nn { algorithm2e } { - \cs_set_eq:NN \@chapter \__sjtu_save_chapter:w + \cs_set_eq:NN \@chapter \SJTU@orig@at@chapter \SetAlgorithmName { \SJTU@algorithmname } { \SJTU@algorithmname } { \SJTU@listalgorithmname } diff --git a/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-de.def b/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-de.def new file mode 100644 index 00000000000..0399c706119 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-de.def @@ -0,0 +1,61 @@ +%% +%% This is file `sjtu-thesis-de.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `thesis-i18n,de') +%% +%% Copyright (C) SJTUG +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ + {German config for thesis (SJTUTeX)} +\ProvidesExplFile{sjtu-thesis-de.def} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_name_const_from_clist:nnnn { de } + { degree_level } { \g__sjtu_thesis_type_int } + { Bachelor, Master, Doktor } +\clist_map_inline:nn + { + { univ } { Shanghai~ Jiao~ Tong~ Universität } , + { address } { Shanghai,~ VR~ China } , + { title_page } { Titelblatt } , + { declaration } { Eidesstattliche~ Erklärung } , + { abstract } { Abstrakt } + } + { \__sjtu_name_const:nnn { de } #1 } +\clist_map_inline:nn + { + { author } { Autor/in } , + { supervisor } { Betreuer/in } , + { assoc_supervisor } { Zweitbetreuer/in } , + { co_supervisor } { Co-Betreuer/in } + } + { \__sjtu_name_set:nnn { de } #1 } +\keys_define:nn { sjtu / info / de } + { + subject .initial:e = + { + Eine~ Dissertation~ Eingereicht~ an \exp_not:N \\ + der~ { \exp_not:V \c__sjtu_name_univ_de_tl }~ für~ + { \exp_not:V \c__sjtu_name_degree_level_de_tl } titel + } + } +\DeclareInstanceCopy { sjtu / page } + { title / de } { title b } +\endinput +%% +%% End of file `sjtu-thesis-de.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-en.def b/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-en.def new file mode 100644 index 00000000000..590f146f410 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-en.def @@ -0,0 +1,61 @@ +%% +%% This is file `sjtu-thesis-en.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `thesis-i18n,en') +%% +%% Copyright (C) SJTUG +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ + {English config for thesis (SJTUTeX)} +\ProvidesExplFile{sjtu-thesis-en.def} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_name_const_from_clist:nnnn { en } + { degree_level } { \g__sjtu_thesis_type_int } + { Bachelor, Master, Doctor } +\clist_map_inline:nn + { + { univ } { Shanghai~ Jiao~ Tong~ University } , + { address } { Shanghai,~ P.R.~ China } , + { title_page } { Title~ Page } , + { declaration } { Statutory~ Declaration } , + { abstract } { Abstract } + } + { \__sjtu_name_const:nnn { en } #1 } +\clist_map_inline:nn + { + { author } { Author } , + { supervisor } { Supervisor } , + { assoc_supervisor } { Assoc.\ Supervisor } , + { co_supervisor } { Co-supervisor } + } + { \__sjtu_name_set:nnn { en } #1 } +\keys_define:nn { sjtu / info / en } + { + subject .initial:e = + { + A~ Dissertation~ Submitted~ to \exp_not:N \\ + { \exp_not:V \c__sjtu_name_univ_en_tl }~ for~ + the~ Degree~ of~ { \exp_not:V \c__sjtu_name_degree_level_en_tl } + } + } +\DeclareInstanceCopy { sjtu / page } + { title / en } { title b } +\endinput +%% +%% End of file `sjtu-thesis-en.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-ja.def b/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-ja.def new file mode 100644 index 00000000000..0fd36cabd6d --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-ja.def @@ -0,0 +1,62 @@ +%% +%% This is file `sjtu-thesis-ja.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `thesis-i18n,ja') +%% +%% Copyright (C) SJTUG +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ + {Japanese config for thesis (SJTUTeX)} +\ProvidesExplFile{sjtu-thesis-ja.def} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_name_const_from_clist:nnnn { ja } + { degree_level } { \g__sjtu_thesis_type_int } + { 学士, 修士, 博士 } +\clist_map_inline:nn + { + { univ } { 上海交通大学 } , + { address } { 中国・上海 } , + { thesis } { 学位請求論文 } , + { title_page } { 標題紙 } , + { declaration } { 誓約書・公表許諾書 } , + { abstract } { 要 \protect \quad 旨 } + } + { \__sjtu_name_const:nnn { ja } #1 } +\clist_map_inline:nn + { + { author } { 氏名 } , + { supervisor } { 指導教員 } , + { assoc_supervisor } { 副指導教員 } , + { co_supervisor } { 共同指導 } + } + { \__sjtu_name_set:nnn { ja } #1 } +\keys_define:nn { sjtu / info / ja } + { + subject .initial:e = + { + \exp_not:V \c__sjtu_name_univ_ja_tl + \exp_not:V \c__sjtu_name_degree_level_ja_tl + \exp_not:V \c__sjtu_name_thesis_ja_tl + } + } +\DeclareInstanceCopy { sjtu / page } + { title / ja } { title b } +\endinput +%% +%% End of file `sjtu-thesis-ja.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-zh.def b/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-zh.def new file mode 100644 index 00000000000..6b72823d118 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/thesis/sjtu-thesis-zh.def @@ -0,0 +1,71 @@ +%% +%% This is file `sjtu-thesis-zh.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `thesis-i18n,zh') +%% +%% Copyright (C) SJTUG +%% 2018--2025 Weijian Wu <alexarawu@outlook.com> +%% 2022--2025 Zilong Li <logcreative@outlook.com> +%% 2024--2025 Boshi Yuan <nemoyuan2008@outlook.com> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +\GetIdInfo$Id: sjtutex.dtx d611a82 2025-02-12 23:33:21 +0800 Alexara Wu <alexarawu@outlook.com> $ + {Chinese config for thesis (SJTUTeX)} +\ProvidesExplFile{sjtu-thesis-zh.def} + {\ExplFileDate}{2.2}{\ExplFileDescription} +\__sjtu_symbol_const:nn { white_square } { "25A1 } +\__sjtu_name_const_from_clist:nnnn { zh } + { degree_level } { \g__sjtu_thesis_type_int } + { 学士, 硕士, 博士 } +\clist_map_inline:nn + { + { univ } { 上海交通大学 } , + { address } { 中国・上海 } , + { thesis } { 学位论文 } , + { title_page } { 题名页 } , + { declaration } { 原创性声明及使用授权书 } , + { orig_decl } { 原创性声明 } , + { auth_decl } { 使用授权书 } , + { decl_author } { 学位论文作者 } , + { decl_supervisor } { 指导教师 } , + { abstract } { 摘 \protect \quad 要 } + } + { \__sjtu_name_const:nnn { zh } #1 } +\clist_map_inline:nn + { + { author } { 姓名 } , + { id } { 学号 } , + { supervisor } { 导师 } , + { assoc_supervisor } { 副导师 } , + { co_supervisor } { 联合导师 } , + { department } { 院系 } , + { major } { 学科 \, / \, 专业 } , + { degree } { 申请学位 } + } + { \__sjtu_name_set:nnn { zh } #1 } +\keys_define:nn { sjtu / info / zh } + { + subject .initial:e = + { + \exp_not:V \c__sjtu_name_univ_zh_tl + \exp_not:V \c__sjtu_name_degree_level_zh_tl + \exp_not:V \c__sjtu_name_thesis_zh_tl + } + } +\DeclareInstanceCopy { sjtu / page } + { title / zh } { title a } +\endinput +%% +%% End of file `sjtu-thesis-zh.def'. diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-cor-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-cor-red.pdf Binary files differnew file mode 100644 index 00000000000..cf92dbc3415 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-cor-red.pdf diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-red.pdf Binary files differdeleted file mode 100644 index 7b34ecf2192..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-red.pdf +++ /dev/null diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-reg-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-reg-red.pdf Binary files differnew file mode 100644 index 00000000000..f4095d10a1f --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-reg-red.pdf diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-small-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-small-red.pdf Binary files differdeleted file mode 100644 index 53901f695b8..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-badge-small-red.pdf +++ /dev/null diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-eng-h-cor-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-eng-h-cor-red.pdf Binary files differnew file mode 100644 index 00000000000..31214dc7580 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-eng-h-cor-red.pdf diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-eng-h-reg-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-eng-h-reg-red.pdf Binary files differnew file mode 100644 index 00000000000..ce55f826419 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-eng-h-reg-red.pdf diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-red.pdf Binary files differdeleted file mode 100644 index 08a405be041..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-red.pdf +++ /dev/null diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-small-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-small-red.pdf Binary files differdeleted file mode 100644 index a1ec93ed9c2..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-small-red.pdf +++ /dev/null diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-c-cor-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-c-cor-red.pdf Binary files differnew file mode 100644 index 00000000000..38f30699d83 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-c-cor-red.pdf diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-c-reg-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-c-reg-red.pdf Binary files differnew file mode 100644 index 00000000000..98fa38a1799 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-c-reg-red.pdf diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-h-cor-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-h-cor-red.pdf Binary files differnew file mode 100644 index 00000000000..48c721b5b61 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-h-cor-red.pdf diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-h-reg-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-h-reg-red.pdf Binary files differnew file mode 100644 index 00000000000..edf9fbcd555 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-h-reg-red.pdf diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-v-cor-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-v-cor-red.pdf Binary files differnew file mode 100644 index 00000000000..9001d515ade --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-v-cor-red.pdf diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-v-reg-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-v-reg-red.pdf Binary files differnew file mode 100644 index 00000000000..a75996e2040 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-logo-std-v-reg-red.pdf diff --git a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-name-red.pdf b/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-name-red.pdf Binary files differdeleted file mode 100644 index 26a249e41bc..00000000000 --- a/Master/texmf-dist/tex/latex/sjtutex/vi/sjtu-vi-name-red.pdf +++ /dev/null |