|
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