|
345 | 345 | {classification} {中图分类号:}, |
346 | 346 | {classified_level} {密级}, |
347 | 347 | {type} {种类}, |
348 | | - {special_type} {特别类型}, |
| 348 | + {special_type} {学生类型}, |
| 349 | + {engineering_special_plan} {工程硕博士专项}, |
349 | 350 | {cross_research} {交叉研究方向}, |
350 | 351 | {international_student_ugp} {政府项目留学生}, |
351 | 352 | } |
|
453 | 454 | % \begin{macrocode} |
454 | 455 | \clist_map_inline:nn |
455 | 456 | { |
| 457 | + % TODO: 自动实现汉字均排 |
456 | 458 | {author} {作\quad 者\quad 姓\quad 名} {Candidate~Name}, |
457 | 459 | {school} {学\quad 院\quad 名\quad 称} {School~or~Department}, |
458 | 460 | {supervisor} {指\quad 导\quad 教\quad 师} {Faculty~Mentor}, |
| 461 | + {industrial_mentor} {行\smallgap: 业\smallgap: 合\smallgap: 作\smallgap: 导\smallgap: 师} {Industry~Collaboration~Mentor}, |
459 | 462 | {chairman} {答辩委员会主席} {Chair,~Thesis~Committee}, |
460 | | - {degree} |
461 | | - {申\quad 请\quad 学\quad 位} |
462 | | - {Degree~Applied}, |
463 | | - {major} {学\quad 科\hspace{0.8ex} / \hspace{0.8ex} 类\quad 别} {Major}, |
| 463 | + % degree、major 的中文与 degreeType 有关,此处以 academic 为准,其余情况通过 \c_@@_auto_tl 处理 |
| 464 | + % 英文倒是无关。 |
| 465 | + {degree} {申\quad 请\quad 学\quad 位} {Degree~Applied}, |
| 466 | + {major} {一\quad 级\quad 学\quad 科} {Major}, |
464 | 467 | {institute} |
465 | 468 | {学\smallgap: 位\smallgap: 授\smallgap: 予\smallgap: 单\smallgap: 位} |
466 | 469 | {Degree~by}, |
|
545 | 548 | % |
546 | 549 | % \subsubsection{l3keys 接口键值对定义} |
547 | 550 | % |
| 551 | +% 定义 |\c_@@_auto_tl| |
| 552 | +% 选项设为它时,表示智能默认值,稍后由 |\@@_resolve_auto_values:| 根据其它信息自动填充。 |
| 553 | +% 参考 https://typst.app/docs/reference/foundations/auto/ 的设计。 |
| 554 | +% \begin{macrocode} |
| 555 | +\tl_const:Nn \c_@@_auto_tl { BIThesis-auto-magic } |
| 556 | +% \end{macrocode} |
| 557 | +% |
548 | 558 | % 定义 |bithesis| 键值对类。 |
549 | 559 | % \begin{macrocode} |
550 | 560 | \keys_define:nn { bithesis } |
|
669 | 679 | % UDC 分类号,研究生学位论文使用 |
670 | 680 | UDC .tl_set:N = \l_@@_value_udc_tl, |
671 | 681 | UDC .initial:n = {540(示例)}, |
| 682 | + % 学术型/专业型,研究生学位论文使用 |
| 683 | + degreeType .choice:, |
| 684 | + degreeType .choices:nn = {professional, academic} { |
| 685 | + \tl_set:Nn \l_@@_value_degree_type_tl {#1} |
| 686 | + }, |
| 687 | + degreeType .initial:n = academic, |
672 | 688 | chairman .tl_set:N = \l_@@_value_chairman_tl, |
| 689 | + industrialMentor .tl_set:N = \l_@@_value_industrial_mentor_tl, |
| 690 | + industrialMentorEn .tl_set:N = \l_@@_value_industrial_mentor_en_tl, |
673 | 691 | degree .tl_set:N = \l_@@_value_degree_tl, |
674 | 692 | degreeEn .tl_set:N = \l_@@_value_degree_en_tl, |
675 | 693 | institute .tl_set:N = \l_@@_value_institute_tl, |
|
686 | 704 | defenseDateEn .initial:n = {June,~2019~(example)}, |
687 | 705 | % 因为默认不显示,所以不需要设置初始值。 |
688 | 706 | classifiedLevel .tl_set:N = \l_@@_value_classified_level_tl, |
689 | | - % 特别类型-交叉研究方向 |
| 707 | + % 学生类型-工程硕博士专项 |
| 708 | + 工程硕博士专项 .bool_set:N = \l_@@_value_engineering_special_plan_bool, |
| 709 | + 工程硕博士专项 .initial:n = {false}, |
| 710 | + % 学生类型-交叉研究方向 |
690 | 711 | crossResearch .bool_set:N = \l_@@_value_cross_research_bool, |
691 | 712 | crossResearch .initial:n = {false}, |
692 | | - % 特别类型-政府项目留学生 |
| 713 | + % 学生类型-政府项目留学生 |
693 | 714 | internationalStudentUGP .bool_set:N = \l_@@_value_international_student_ugp_bool, |
694 | 715 | internationalStudentUGP .initial:n = {false}, |
695 | 716 | } |
|
791 | 812 | \keys_define:nn { bithesis / const / info } |
792 | 813 | { |
793 | 814 | degree .tl_set:N = \g_@@_const_info_degree_tl, |
794 | | - degree .initial:n = { |
795 | | - \c_@@_graduate_label_degree_tl |
796 | | - }, |
| 815 | + degree .initial:n = {\c_@@_auto_tl}, |
797 | 816 | major .tl_set:N = \g_@@_const_info_major_tl, |
798 | | - major .initial:n = { |
799 | | - \@@_if_graduate:TF { |
800 | | - \c_@@_graduate_label_major_tl |
801 | | - } { |
802 | | - \@@_get_const:N {major} |
803 | | - } |
804 | | - }, |
| 817 | + major .initial:n = {\c_@@_auto_tl}, |
805 | 818 | } |
806 | 819 | \keys_define:nn { bithesis / const / heading } |
807 | 820 | { |
|
927 | 940 | } |
928 | 941 | % \end{macrocode} |
929 | 942 | % |
930 | | -% \subsubsection{处理模板选项} |
| 943 | +% \subsubsection{l3keys 键值对预处理} |
| 944 | +% |
| 945 | +% 计算 auto 并替换为标准的值 |
| 946 | +% \begin{macrocode} |
| 947 | +\cs_new:Npn \@@_resolve_auto_values: { |
| 948 | + \tl_if_eq:NnT \g_@@_const_info_degree_tl {\c_@@_auto_tl} { |
| 949 | + \tl_if_eq:NnTF \l_@@_value_degree_type_tl {academic} { |
| 950 | + \keys_set:nn {bithesis} {const/info/degree = \c_@@_graduate_label_degree_tl} |
| 951 | + } { |
| 952 | + \keys_set:nn {bithesis} {const/info/degree = 申\quad 请\quad 类\quad 别} |
| 953 | + } |
| 954 | + } |
| 955 | + \tl_if_eq:NnT \g_@@_const_info_major_tl {\c_@@_auto_tl} { |
| 956 | + \@@_if_graduate:TF { |
| 957 | + \tl_if_eq:NnTF \l_@@_value_degree_type_tl {academic} { |
| 958 | + \keys_set:nn {bithesis} {const/info/major = \c_@@_graduate_label_major_tl} |
| 959 | + } { |
| 960 | + \keys_set:nn {bithesis} {const/info/major = 学\quad 位\quad 领\quad 域} |
| 961 | + } |
| 962 | + } { |
| 963 | + \keys_set:nn {bithesis} {const/info/major = \@@_get_const:N {major}} |
| 964 | + } |
| 965 | + } |
| 966 | +} |
| 967 | +% \end{macrocode} |
| 968 | +% |
| 969 | +% \subsubsection{应用模板选项} |
931 | 970 | % |
932 | 971 | % 英文模板需要开启 ctexbook 宏包的英文选项。 |
933 | 972 | % \begin{macrocode} |
|
2030 | 2069 | \vspace*{65mm} |
2031 | 2070 | {\heiti\zihao{-2} \l_@@_value_title_tl} |
2032 | 2071 | \vskip 60mm |
2033 | | - % 黑体 小三 |
2034 | | - {\heiti \zihao{-3} \@@_secret_info:nn{\l_@@_value_author_tl}{\g_@@_const_substitute_symbol_tl~\g_@@_const_substitute_symbol_tl~\g_@@_const_substitute_symbol_tl}} |
| 2072 | + { |
| 2073 | + % 渲染信息。 |
| 2074 | + \clist_set:Nn \l_@@_input_clist { |
| 2075 | + {姓名:} {\@@_secret_info:nn{\l_@@_value_author_tl}{\g_@@_const_substitute_symbol_tl\g_@@_const_substitute_symbol_tl\g_@@_const_substitute_symbol_tl}}, |
| 2076 | + {学号:} {\@@_secret_info:N \l_@@_value_student_id_tl}, |
| 2077 | + {学院:} {\l_@@_value_school_tl}, |
| 2078 | + } |
| 2079 | + \linespread{2.0}\selectfont |
| 2080 | + % 黑体 小三 |
| 2081 | + \heiti \zihao{-3} \@@_render_cover_entry:n \l_@@_input_clist |
| 2082 | + } |
2035 | 2083 | \vskip 10mm |
2036 | 2084 | % 黑体 小三 |
2037 | 2085 | {\heiti \zihao{-3} \l_@@_cover_date_tl} |
|
2043 | 2091 | % \begin{macro}{\make_paper_back:} |
2044 | 2092 | % 制作书脊。 |
2045 | 2093 | % \begin{macrocode} |
| 2094 | +% TODO: 使用统一方式警告 |
| 2095 | +\msg_new:nnn { bithesis } { paper-back/missing-degree-type-icon-file } |
| 2096 | + { |
| 2097 | + Failed~to~find~the~file~for~degree~type~in~the~paper~back:~#1.\\ |
| 2098 | + Please~download~from~https://github.com/BITNP/BIThesis/blob/main/templates/graduate-thesis/ #1. |
| 2099 | + } |
2046 | 2100 | \cs_new:Npn \make_paper_back: { |
2047 | 2101 | \cleardoublepage |
2048 | 2102 | \currentpdfbookmark{书脊}{frontmatter:paperback} |
|
2052 | 2106 | \linespread{1.1}\selectfont |
2053 | 2107 | \begin{minipage}[c][19.7cm]{2em} |
2054 | 2108 | \centering |
| 2109 | + { |
| 2110 | + \tl_new:N \l_@@_icon_path_tl |
| 2111 | + \tl_set:Nx \l_@@_icon_path_tl { misc/icon_ \l_@@_value_degree_type_tl .jpg } |
| 2112 | + \file_if_exist:nTF {\l_@@_icon_path_tl} { |
| 2113 | + \includegraphics[width=1.5em]{\l_@@_icon_path_tl} |
| 2114 | + } { |
| 2115 | + \msg_warning:nnV {bithesis} {paper-back/missing-degree-type-icon-file} {\l_@@_icon_path_tl} |
| 2116 | + } |
| 2117 | + } |
| 2118 | + \vspace{1em plus 1fill} |
| 2119 | + \par |
2055 | 2120 | { |
2056 | 2121 | \heiti\zihao{3} |
2057 | 2122 | \tl_if_blank:VTF \l_@@_value_vertical_title_tl |
|
2085 | 2150 |
|
2086 | 2151 | \hfill |
2087 | 2152 |
|
2088 | | - % 以下内容是「特别类型」的内容, |
| 2153 | + % 以下内容是「学生类型」的内容, |
2089 | 2154 | % 在没有勾选的时候隐藏。 |
2090 | | - \bool_if:nT {\l_@@_cover_show_special_type_box_bool || \l_@@_value_international_student_ugp_bool || \l_@@_value_cross_research_bool} { |
| 2155 | + \bool_if:nT {\l_@@_cover_show_special_type_box_bool || \l_@@_value_international_student_ugp_bool || \l_@@_value_cross_research_bool || \l_@@_value_engineering_special_plan_bool} { |
2091 | 2156 | \begin{minipage}[t]{0.48\textwidth} |
2092 | 2157 | \vspace{-12pt} |
2093 | 2158 | \begin{flushright} |
|
2097 | 2162 | \heiti \zihao{-4} |
2098 | 2163 | \scalebox{1.1}\BigStar{}\hspace{4pt} \c_@@_label_special_type_tl\\ |
2099 | 2164 |
|
| 2165 | + { |
| 2166 | + \zihao{4} |
| 2167 | + \bool_if:NTF \l_@@_value_engineering_special_plan_bool {\boxcheck:} {\boxempty:} |
| 2168 | + } |
| 2169 | + \hspace{1pt}\c_@@_label_engineering_special_plan_tl\\ |
| 2170 | + |
2100 | 2171 | { |
2101 | 2172 | \zihao{4} |
2102 | 2173 | \bool_if:NTF \l_@@_value_cross_research_bool {\boxcheck:} {\boxempty:} |
|
2151 | 2222 | {\c_@@_graduate_label_author_tl} {\@@_secret_info:nn{\l_@@_value_author_tl}{\g_@@_const_substitute_symbol_tl\g_@@_const_substitute_symbol_tl\g_@@_const_substitute_symbol_tl}}, |
2152 | 2223 | {\c_@@_graduate_label_school_tl} {\l_@@_value_school_tl}, |
2153 | 2224 | {\c_@@_graduate_label_supervisor_tl} {\@@_secret_info:N{\l_@@_value_supervisor_tl}}, |
| 2225 | + {\c_@@_graduate_label_industrial_mentor_tl} {\@@_secret_info:N{\l_@@_value_industrial_mentor_tl}}, |
2154 | 2226 | {\c_@@_graduate_label_chairman_tl} {\@@_secret_info:N{\l_@@_value_chairman_tl}}, |
2155 | 2227 | {\g_@@_const_info_degree_tl} {\l_@@_value_degree_tl}, |
2156 | 2228 | {\g_@@_const_info_major_tl} {\l_@@_value_major_tl}, |
|
2209 | 2281 | {\c_@@_graduate_label_author_en_tl} {\@@_secret_info:N{\l_@@_value_author_en_tl}}, |
2210 | 2282 | {\c_@@_graduate_label_school_en_tl} {\l_@@_value_school_en_tl}, |
2211 | 2283 | {\c_@@_graduate_label_supervisor_en_tl} {\@@_secret_info:N{\l_@@_value_supervisor_en_tl}}, |
| 2284 | + {\c_@@_graduate_label_industrial_mentor_en_tl} {\@@_secret_info:N{\l_@@_value_industrial_mentor_en_tl}}, |
2212 | 2285 | {\c_@@_graduate_label_chairman_en_tl} {\@@_secret_info:N{\l_@@_value_chairman_en_tl}}, |
2213 | 2286 | {\c_@@_graduate_label_degree_en_tl} {\l_@@_value_degree_en_tl}, |
2214 | 2287 | {\c_@@_graduate_label_major_en_tl} {\l_@@_value_major_en_tl}, |
|
2317 | 2390 | % 提供用户配置的接口。 |
2318 | 2391 | % \begin{macrocode} |
2319 | 2392 | \DeclareDocumentCommand \BITSetup { m } |
2320 | | - { \keys_set:nn { bithesis } { #1 }} |
| 2393 | + { |
| 2394 | + \keys_set:nn { bithesis } { #1 } |
| 2395 | + \@@_resolve_auto_values: |
| 2396 | + } |
2321 | 2397 | % \end{macrocode} |
2322 | 2398 | % \end{macro} |
2323 | 2399 | % |
|
0 commit comments