Newer
Older
% \subsubsection{绘制部件}
% \changes{v0.16}{2022/03/02}{将摘要部件分离到 \file{.def} 文件。}
% \changes{v0.16}{2022/03/02}{使用 \pkg{xtemplate} 重构摘要。}
%
% \begin{macro}{abstract/title}
% 中文摘要标题实例。
%<*(definition-ug|definition-g)>
\@@_declare_element:nn { abstract / title }
{
content = \@@_abs_title:V \c_@@_name_abstract_title_tl,
format = \bfseries \kaishu \zihao { -2 },
bottom-skip = 1.2 cm
}
% \begin{macro}{abstract/info}
% 中文摘要信息栏实例。
% \begin{macrocode}
\@@_declare_element:nn { abstract / info }
{
%<definition-ug> content = \@@_abs_info_ug:nn { } { : },
%<definition-ug> format = \zihao { -4 } \kaishu,
%<definition-g> format = \zihao { 4 } \kaishu,
align = l,
bottom-skip = 1 cm
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{abstract/en/title}
% 英文摘要标题实例。
% \begin{macrocode}
\@@_declare_element:nn { abstract / en / title }
{
content = \@@_abs_title:V \c_@@_name_abstract_title_en_tl,
format = \bfseries \kaishu \zihao { -2 },
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{abstract/en/info}
% 英文摘要信息栏实例。
% \begin{macrocode}
\@@_declare_element:nn { abstract / en / info }
{
%<definition-ug> content = \@@_abs_info_ug:nn { _en } { :~ },
%<definition-ug> format = \zihao { -4 },
%<definition-g> format = \zihao { 4 },
align = l,
bottom-skip = 1 cm
}
%</(definition-ug|definition-g)>
% \end{macrocode}
% \end{macro}
% \changes{v0.13}{2021/12/12}{使用 \hologo{LaTeX3} 语法重构本科生摘要。}
% \begin{arguments}
% \item 语言,空置为中文,|_en| 为英文
% \item 分隔符
% \end{arguments}
{ \clist_item:Nn \c_@@_name_type_en_clist { \g_@@_info_type_int } }
% \end{macrocode}
% 由于作者姓名使用的字样发生了变动,这里进行替换以便嵌入循环。
% \begin{macrocode}
\tl_set_eq:NN \c_@@_name_author_tl \c_@@_name_author_a_tl
% \end{macrocode}
% 使用循环输出院系、专业、作者、导师信息。
% \begin{macrocode}
\clist_map_inline:nn { dept, major, author, supv_full }
{ \@@_name:n { ##1 #1 } #2 \@@_info:n { ##1 #1 } \\ }
\@@_name:n { abstract #1 } #2
}
% \changes{v0.13}{2021/12/12}{使用 \hologo{LaTeX3} 语法重构研究生摘要。}
% \begin{arguments}
% \item 分隔符
% \end{arguments}
% 研究生中文摘要页包括下划线以及若干特殊的对齐方式,实现方式较为繁琐。使用 \cs{@@_full_uline:NV} 确定内容宽度后,调用 \cs{@@_uline:n} 或 \cs{@@_ulined_center_box:nn} 命令以绘制横穿页面的下划线。前两行为标题。
\clist_item:Nn \c_@@_name_type_clist { \g_@@_info_type_int }
\c_@@_name_title_a_tl #1
}
% \end{macrocode}
% 专业、年级、姓名。
% \begin{macrocode}
\@@_full_uline:NV \l_@@_tmp_dim
{
\@@_ulined_center_box:nn { 11 em } { \l_@@_info_major_tl }
\c_@@_name_major_a_tl
\@@_ulined_center_box:nn { 4 em } { \l_@@_info_grade_tl }
\c_@@_name_grade_tl \c_@@_name_author_a_tl #1
}
\@@_ulined_center_box:nn { \l_@@_tmp_dim }
{ \l_@@_info_author_tl } \\
% \end{macrocode}
% 导师姓名、职称。
% \begin{macrocode}
\@@_full_uline:NV \l_@@_tmp_dim
{ \c_@@_name_supv_a_tl #1 }
\@@_ulined_center_box:nn { \l_@@_tmp_dim }
{ \l_@@_info_supv_full_tl }
}
% \end{macro}
%
% \begin{macro}{\@@_abs_info_en_g:n}
% 绘制研究生英文摘要信息栏。
% \begin{arguments}
% \item 分隔符
% \end{arguments}
% 前两行为标题。
\@@_uline_list:xnn { \l_@@_info_type_en_tl #1 }
{ \l_@@_info_title_en_tl } { \g_@@_abs_title_left_skip }
% 使用循环输出专业、姓名、导师。注意这里将 |\\| 放置在前部,
% 以避免末尾生成多余的换行符产生 |Underfull \vbox| 信息。
% 生成中英文关键词列表。
% \begin{arguments}
% \item 语言,空置为中文,|_en| 为英文
% \item 关键词分隔符
% \end{arguments}
\tl_set:Nv \l_@@_tmp_tl { c_@@_name_keywords #1 _tl }
\@@_get_text_width:NV \l_@@_tmp_dim \l_@@_tmp_tl
{
\labelwidth \l_@@_tmp_dim
\labelsep \c_zero_dim
\leftmargin \c_zero_dim
\rightmargin \c_zero_dim
\advance \leftmargin \l_@@_tmp_dim
% \end{macrocode}
% 使用粗体作为标签样式。
% \begin{macrocode}
\cs_set_eq:NN \makelabel \textbf
}
\item \clist_use:cn { l_@@_info_keywords #1 _clist } { #2 }
% \begin{macro}{\@@_make_abstract:,\@@_make_abstract_en:}
% 绘制摘要页面。
%<*(definition-ug|definition-g)>
\cs_new_protected:Npn \@@_make_abstract:
\UseInstance { nju } { abstract / title }
\UseInstance { nju } { abstract / info }
\cs_new_protected:Npn \@@_make_abstract_en:
{
\UseInstance { nju } { abstract / en / title }
\UseInstance { nju } { abstract / en / info }
}
%</(definition-ug|definition-g)>
% \begin{macro}{\g_@@_abs_title_left_skip}
% 研究生摘要标题左边距。
\skip_new:N \g_@@_abs_title_left_skip
% \end{macrocode}
% \end{macro}
%
% \begin{macrocode}
% \end{macrocode}
% \begin{macro}{style/abstract-in-toc}
% \changes{v0.15}{2022/02/04}{可选择摘要是否出现在目录中。}
% 是否将摘要添加到目录。
% \begin{macrocode}
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
abstract-in-toc .bool_gset:N = \g_@@_abs_in_toc_bool,
abstract-in-toc .initial:n = true,
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{style/abstract-title}
% \changes{v0.16}{2022/03/26}{可选择研究生摘要标题样式。}
% 选择摘要样式,默认为 \opt{strict}。
% \begin{macrocode}
abstract-title .choice:,
abstract-title / strict .code:n =
{
\bool_gset_true:N \g_@@_strict_abs_title_bool
\skip_gset:Nn \g_@@_abs_title_left_skip { 1 em }
},
abstract-title / centered .code:n =
{
\bool_gset_true:N \g_@@_strict_abs_title_bool
\skip_gset:Nn \g_@@_abs_title_left_skip { 0 pt plus 1 fill }
},
abstract-title / natural .code:n =
{
\bool_gset_false:N \g_@@_strict_abs_title_bool
\skip_gset:Nn \g_@@_abs_title_left_skip { 0 pt plus 1 fill }
},
abstract-title .initial:n = strict
% \begin{environment}{abstract}
% \changes{v0.13}{2021/12/12}{重新绘制摘要。}
\@@_abs_bookmark:Vn \c_@@_name_abstract_a_tl { abstract }
% 英文摘要环境。\pkg{xparse} 目前不支持合并带有星号的环境,因此需要单独定义。
% \begin{macrocode}
\@@_abs_bookmark:Vn \c_@@_name_abstract_a_en_tl { abstract-en }
% \begin{environment}{preface}
% \begin{environment}{acknowledgement}
% \begin{macro}{\njupaperlist}
% \changes{v0.10}{2021/09/29}{新增了成果列表页面。}
\NewDocumentCommand \njupaperlist
{ O { \c_@@_name_paperlist_tl } m }
\group_begin:
% \end{macrocode}
% 修改姓名的显示方式,使被注解的姓名可被加粗下划线表示。
% \begin{macrocode}
\RenewDocumentCommand \mkbibnamegiven { m }
{ \njuline { \bf ##1 } } { ##1 } }
\RenewDocumentCommand \mkbibnamefamily { m }
{ \njuline { \bf ##1 } } { ##1 } }
% \end{macrocode}
% 修改年份的显示方式,默认进行加粗。
% \begin{macrocode}
\RenewDocumentCommand \mkbibdateshort { m m m }
{ \textbf { \thefield { ##1 } } }
\nocite { #2 }
\printbibliography [ heading = subbibliography, title = #1 ]
%
% \subsection{符号表}
%
% \begin{macro}{\@@_notation_label:n}
% 左对齐的标签格式,用于符号表。
% \begin{macrocode}
\cs_new_protected:Npn \@@_notation_label:n #1 { #1 \hfil }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_make_notation:nn}
% 生成符号表。由于符号表只有符号和说明两列,相比于 \env{longtable} 环境,
% \env{description} 环境的语法更为简洁直观,且说明文字可以换行,因而此处使用
% \hologo{LaTeX2e} 的列表环境进行封装,定义和语法参见 \file{source2e.pdf} 中的
% \begin{macrocode}
\cs_new_protected:Npn \@@_make_notation:nn #1#2
{
\dim_set:Nn \l_@@_tmp_dim { \textwidth - #1 - #2 }
\list { }
{
% \end{macrocode}
% \tn{list} 环境使用宽度固定的盒子制作标签,通过指定这个盒子的宽度
% \tn{labelwidth} 即可确定左侧标签区域的宽度。
% \begin{macrocode}
\labelsep \c_zero_dim
\itemsep \c_zero_dim
\parsep \c_zero_dim
% \end{macrocode}
% 右侧说明文字区域的宽度无法直接指定,而是靠计算左右边距 \tn{leftmargin} 和
% \tn{rightmargin} 得到的。
% \begin{macrocode}
}
}
% \end{macrocode}
% \end{macro}
%
% \begin{environment}{notation}
% 符号表环境。
% \begin{arguments}
% \item 说明区域宽度,初始值为 10 em。说明宽度的调整更为常见,所以放在前面。
% \item 符号区域宽度,初始值为 5 em
% \end{arguments}
% \begin{macrocode}
\NewDocumentEnvironment { notation } { O { 10 em } O { 5 em } }
\@@_make_notation:nn { #1 } { #2 }
}
{ \endlist }
% \end{macrocode}
% \end{environment}
%
% \begin{environment}{notation*}
% 带有星号的符号表不会插入目录。
% \begin{macrocode}
\NewDocumentEnvironment { notation* } { O { 10 em } O { 5 em } }
{
\@@_make_notation:nn { #1 } { #2 }
}
{ \endlist }
%</class>
% \end{macrocode}
% \end{environment}
%
% \changes{v0.16}{2022/02/23}{将名称常量分离到 \file{.def} 文件。}
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
%
% 由于同一名称在不同位置具有不同变体,本模板使用字母后缀名进行了区分,
% 并在易混淆处添加了注释。
%
% 通用默认名称。注意空格是忽略掉的。
% \begin{macrocode}
%<*(definition-ug|definition-g)>
\clist_map_inline:nn
{
{ acknowledgement } { 致\hspace{2em}谢 },
{ id } { 学号 },
{ notation } { 符号表 },
{ orig_date } { 日期 },
{ paperlist } { 发表文章目录 },
{ pdf_creator } { LaTeX~ with~ njuthesis~ class },
{ preface } { 前\hspace{2em}言 },
{ supv_ii } { 第二导师 },
{ supv_ttl } { 职称 }
}
{ \@@_define_name:nn #1 }
% \end{macrocode}
%
% 定义同时使用到中英文名称的常量。
% \begin{macrocode}
\clist_map_inline:nn
{
{ abstract } { 摘要 } { ABSTRACT },
% 用于书签的摘要名称字样
{ abstract_a } { 中文摘要 } { ABSTRACT },
{ appendix } { 附录 } { appendix },
{ dept } { 院系 } { DEPARTMENT },
{ figure } { 图 } { figure },
{ keywords } { 关键词: } { Keywords:~ },
{ lang } { 中文 } { 英文 },
{ nju } { 南京大学 } { Nanjing~ University },
{ table } { 表 } { table }
}
{ \@@_define_name:nnn #1 }
%</(definition-ug|definition-g)>
% \end{macrocode}
%
% 本科生模板默认名称。
% \begin{macrocode}
%<*definition-ug>
\clist_map_inline:nn
{
% 用于摘要的作者名称字样
{ author_a } { 本科生姓名 },
{ grade } { 年级 },
{ orig_decl }
{ \c_@@_name_nju_tl 本科毕业论文(设计)诚信承诺书 },
{ orig_sign } { 作者签名 },
{ sm_date } { 提交日期 },
{ supv } { 导师 },
{ title } { 题目 },
{ type } { 本科生毕业论文(设计、作品) },
{ ug } { 本科生 }
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
}
{ \@@_define_name:nn #1 }
\clist_map_inline:nn
{
{ abstract_title }
{
\c_@@_name_nju_tl \c_@@_name_type_tl
\c_@@_name_lang_tl \c_@@_name_abstract_tl
}
{
\c_@@_name_nju_tl \c_@@_name_type_tl
\c_@@_name_lang_en_tl \c_@@_name_abstract_tl
},
{ author } { 学生姓名 } { UNDERGRADUATE },
{ major } { 专业 } { SPECIALIZATION },
{ supv_full } { 指导教师(姓名、职称) } { MENTOR }
}
{ \@@_define_name:nnn #1 }
% \end{macrocode}
%
% \begin{variable}{\c_@@_orig_decl_text_tl}
% 学位论文诚信承诺书。
% \begin{macrocode}
\tl_const:Nn \c_@@_orig_decl_text_tl
{
本人郑重承诺:所呈交的毕业论文(设计)(题目:)是在指导教师的指导下
严格按照学校和院系有关规定由本人独立完成的。本毕业论文(设计)中引用
他人观点及参考资源的内容均已标注引用,如出现侵犯他人知识产权的行为,
由本人承担相应法律责任。本人承诺不存在抄袭、伪造、篡改、代写、买卖毕
业论文(设计)等违纪行为。
}
%</definition-ug>
% \end{macrocode}
% \end{variable}
%
% 研究生模板默认名称。
% \begin{macrocode}
%<*definition-g>
\clist_map_inline:nn
{
% 用于摘要的作者名称字样
{ author_a }
{ \tl_item:Nn \l_@@_info_degree_tl { 1 } 士生姓名 },
{ chairman } { 答辩委员会主席: },
{ clc } { 分类号 },
{ confer } { 学位授予单位和日期 },
{ df_date } { 论文答辩日期 },
{ degree } { 申请学位级别 },
{ (申请 \l_@@_info_degree_tl 学位) },
{ field } { 研究方向 },
{ g } { 研究生 },
{ grade } { 级 },
{ \c_@@_name_nju_tl 学位论文原创性声明 },
{ orig_sign } { 研究生签名 },
{ reviewer } { 评阅人: },
{ seclv } { 密级 },
{ sign } { (签字) },
{ sm_date } { 论文提交日期 },
{ supv } { 导师 },
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
% 用于国家图书馆封面的标题名称字样
{ title_b } { (题名和副题名) },
{ udc } { U D C }
}
{ \@@_define_name:nn #1 }
\clist_map_inline:nn
{
{ abstract_title }
{ 南京大学 \l_@@_info_type_tl 中文摘要首页用纸 }
{ 南京大学 \l_@@_info_type_tl 英文摘要首页用纸 },
{ author } { 作者姓名 } { POSTGRADUATE },
{ major } { 专业方向 } { SPECIALIZATION },
{ supv_full } { 指导教师 } { MENTOR }
}
{ \@@_define_name:nnn #1 }
% \end{macrocode}
%
% \begin{variable}{\c_@@_cover_en_text_tl}
% 英文封面字样。
% \begin{macrocode}
\tl_const:Nn \c_@@_cover_en_text_tl
{
A~ dissertation~ submitted~ to \\
the~ graduate~ school~ of~ Nanjing~ University \\
in~ partial~ fulfilment~ of~ the~ requirements~ for~ the~ degree~ of
}
% \end{macrocode}
% \end{variable}
%
% \begin{variable}{\c_@@_orig_decl_text_tl}
% 学位论文原创性声明。
% \begin{macrocode}
\tl_const:Nn \c_@@_orig_decl_text_tl
{
本人郑重声明,所提交的学位论文是本人在导师指导下独立进行科学研究工作
所取得的成果。除本论文中已经注明引用的内容外,本论文不包含其他个人或
集体已经发表或撰写过的研究成果,也不包含为获得南京大学或其他教育机构
的学位证书而使用过的材料。对本文的研究做出重要贡献的个人和集体,均已
在论文的致谢部分明确标明。本人郑重申明愿承担本声明的法律责任。
}
%</definition-g>
% \end{macrocode}
% \end{variable}
%
% \begin{macrocode}
%<*(definition-ug|definition-g)>
\clist_map_inline:nn
{
{ axiom } { 公理 } { Axiom },
{ corollary } { 推论 } { Corollary },
{ definition } { 定义 } { Definition },
{ example } { 例 } { Example },
{ lemma } { 引理 } { Lemma },
{ proof } { 证明 } { Proof },
{ theorem } { 定理 } { Theorem }
}
%</(definition-ug|definition-g)>
% \end{macrocode}
%