forked from SUSTech-CRA/sustech-master-thesis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sustechthesis.dtx
6215 lines (6161 loc) · 185 KB
/
sustechthesis.dtx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
% \iffalse meta-comment
%
% Copyright (C) 2019-2021 by Southern University of Science and Technology Computer Research Association <[email protected]>
%
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% 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.
%
% This work has the LPPL maintenance status `maintained'.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{sustechthesis.dtx}[2024/04/29 1.3.21 Southern University of Science and Technology Thesis Template]
\documentclass{ltxdoc}
\usepackage{dtx-style}
\EnableCrossrefs
\CodelineIndex
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
% \DoNotIndex{\newenvironment,\@bsphack,\@empty,\@esphack,\sfcode}
% \DoNotIndex{\addtocounter,\label,\let,\linewidth,\newcounter}
% \DoNotIndex{\noindent,\normalfont,\par,\parskip,\phantomsection}
% \DoNotIndex{\providecommand,\ProvidesPackage,\refstepcounter}
% \DoNotIndex{\RequirePackage,\setcounter,\setlength,\string,\strut}
% \DoNotIndex{\textbackslash,\texttt,\ttfamily,\usepackage}
% \DoNotIndex{\begin,\end,\begingroup,\endgroup,\par,\\}
% \DoNotIndex{\if,\ifx,\ifdim,\ifnum,\ifcase,\else,\or,\fi}
% \DoNotIndex{\let,\def,\xdef,\edef,\newcommand,\renewcommand}
% \DoNotIndex{\expandafter,\csname,\endcsname,\relax,\protect}
% \DoNotIndex{\Huge,\huge,\LARGE,\Large,\large,\normalsize}
% \DoNotIndex{\small,\footnotesize,\scriptsize,\tiny}
% \DoNotIndex{\normalfont,\bfseries,\slshape,\sffamily,\interlinepenalty}
% \DoNotIndex{\textbf,\textit,\textsf,\textsc}
% \DoNotIndex{\hfil,\par,\hskip,\vskip,\vspace,\quad}
% \DoNotIndex{\centering,\raggedright,\ref}
% \DoNotIndex{\c@secnumdepth,\@startsection,\@setfontsize}
% \DoNotIndex{\ ,\@plus,\@minus,\p@,\z@,\@m,\@M,\@ne,\m@ne}
% \DoNotIndex{\@@par,\DeclareOperation,\RequirePackage,\LoadClass}
% \DoNotIndex{\AtBeginDocument,\AtEndDocument}
%
% \GetFileInfo{\jobname.dtx}
%
% \def\indexname{索引}
% \IndexPrologue{\section{\indexname}}
%
% \title{\bfseries\color{violet}\sustechthesis :南方科技大学学位论文模板}
% \author{{\fangsong 南方科技大学计算机研究协会 CRA}\\{\fangsong 清华大学 TUNA 协会驻南方科技大学联络代表处}\\[5pt]\texttt{[email protected]}}
% \date{v\fileversion\ (\filedate)}
% \maketitle\thispagestyle{empty}
%
%
% \begin{abstract}\noindent
% 此宏包旨在建立一个简单易用的南方科技大学学位论文模板,目前仅包括硕士
% 论文、博士论文。
% \end{abstract}
%
% \vskip2cm
% \def\abstractname{免责声明}
% \begin{abstract}
% \noindent
% \begin{enumerate}
% \item 本模板的发布遵守 \href{https://www.latex-project.org/lppl/lppl-1-3c.txt}{\LaTeX{} Project Public License (1.3.c)},使用前请认真阅读协议内
% 容。
% \item 本模板为作者根据
% 南方科技大学研究生院颁发的
% \href{https://gs.sustech.edu.cn/xueweishouyuzhengce}{%
% 《学位授予的政策文件》(以下或改称《写作指南》)}
% 编写而成,旨在供南方科技大学毕业生撰写学位论文使用,如有冲突以官网规定为准。。
% \item 任何个人或组织以本模板为基础进行修改、扩展而生成的新的专用模板,请严格遵
% 守 \LaTeX{} Project Public License 协议。由于违犯协议而引起的任何纠纷争端均与
% 本模板作者无关。
% \end{enumerate}
% \end{abstract}
%
%
% \clearpage
% \pagestyle{fancy}
% \begin{multicols}{2}[
% \setlength{\columnseprule}{.4pt}
% \setlength{\columnsep}{18pt}]
% \tableofcontents
% \end{multicols}
% \clearpage
%
% \section{模板介绍}
% \sustechthesis{} (\textbf{S}outhern \textbf{U}niversity of
% \textbf{S}cience and \textbf{T}echnology \LaTeX{} \textbf{Thesis} Template)
% 是为了帮助南方科技大学毕业生撰写毕业论文而编写的 \LaTeX{} 论文模板。
%
% 本文档将尽量完整的介绍模板的使用方法,如有不清楚之处,或者想提出改进建议,
% 可以在 \href{https://github.com/SUSTech-CRA/sustech-master-thesis/issues/}{GitHub Issues}
% 参与讨论或提问。
% 有兴趣者都可以参与完善此手册,也非常欢迎对代码的贡献。
%
% \note[注意:]{模板的作用在于减少论文写作过程中格式调整的时间。前提是遵守模板的
% 用法,否则即便用了 \sustechthesis{} 也难以保证输出的论文符合学校规范。}
%
% 用户如果遇到 bug,或者发现与学校《写作指南》 的要求不一致,可以尝试以下办法:
% \begin{enumerate}
% \item 将模板升级到最新,见第~\ref{sec:upgrade} 节;
% \item 在 GitHub Issues 中按照说明
% \href{https://github.com/SUSTech-CRA/sustech-master-thesis/issues/new?template=bug_report.md}{报告 bug};
% \item 在 南科大 \LaTeX{} 学习交流群中提问。
% \end{enumerate}
%
% \section{贡献者}
% \label{sec:contributors}
%
% \sustechthesis{} 的开发过程中,参与的维护者包括:
%
% \begin{itemize}
% \item 李子强(\githubuser{liziwl}):2019 级研究生,主要维护者。
% \item 李可明(\githubuser{ghlkm}):2020 级研究生,主要维护者。
% \end{itemize}
%
% 以及支持本项目,并提供诸多宝贵的修改建议的同学:
% \begin{itemize}
% \item 樊青远(\githubuser{sparkcyf}):2018 级本科生,CRA 会长,为校内 \LaTeX{} 活动提供支持。
% \item 王玫骅:2019 级研究生,协调该模版 Word 与 \LaTeX{}的不一致,并提供修改建议。
% \item 张志旭:研究生院学位办实习老师,协调该模版 Word 与 \LaTeX{}的不一致,并提供修改建议。
% \item 梁钰栋(\githubuser{Iydon}):2017 级本科生,开发维护本科生毕业生模版,为该模版提供建议。
% \end{itemize}
%
% \sustechthesis{} 由 \thuthesis{} v7.1.0 适配,感谢清华大学 TUNA 协会为模版易用性所做出的努力。
%
% 同时,也要感谢南方科技大学研究生院的老师们的支持,以及所有在 GitHub 和 QQ 交流群上提出问题与贡献代码的同学。
% \sustechthesis{} 的持续发展,离不开你们的帮助与支持。
%
% \section{安装}
% \label{sec:installation}
%
% 建议从下列途径下载最新发布版:
% \begin{description}
% \item[GitHub] \url{https://github.com/SUSTech-CRA/sustech-master-thesis}, 从 Release 中下载 zip 文件。
% \item[南方科技大学镜像站] \url{https://mirrors.sustech.edu.cn/github-release/SUSTech-CRA/sustech-master-thesis/}
% \end{description}
%
% 模板支持在 TeX Live、MacTeX 本地编译器和 Overleaf 在线平台下进行编译,但要求 2019 年或更新的发行版。
% 当然,尽可能使用最新的版本可以避免 bug。
%
% \subsection{模板的组成}
% 下表列出了 \sustechthesis{} 的主要文件及其功能介绍:
%
% \begin{longtable}{l|p{8cm}}
% \toprule
% {\heiti 文件(夹)} & {\heiti 功能描述}\\\midrule
% \endfirsthead
% \midrule
% {\heiti 文件(夹)} & {\heiti 功能描述}\\\midrule
% \endhead
% \endfoot
% \endlastfoot
% sustechthesis.ins & \textsc{DocStrip} 驱动文件(开发用) \\
% sustechthesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule
% sustechthesis.cls & 模板类文件\\
% sustechthesis-example.tex & 示例文档主文件\\
% ref/ & 示例文档参考文献目录\\
% data/ & 示例文档章节具体内容\\
% figures/ & 示例文档图片路径\\
% sustech-setup.tex & 示例文档基本配置\\\midrule
% Makefile & Makefile\\
% latexmkrc & latexmk 配置文件 \\
% README.md & Readme\\
% \textbf{sustechthesis.pdf} & 用户手册(本文档)\\\bottomrule
% \end{longtable}
%
% 几点说明:
% \begin{itemize}
% \item 由于开发仓促,模版仍有大量命令含有 \file{thu} 前缀。
% 计划对此进行重构,但是需要保证功能完好的情形下。
% \item \file{sustechthesis.cls} 可由 \file{sustechthesis.ins}
% 和 \file{sustechthesis.dtx} 生成,但为了降低新手用户的使用难度,故
% 将 \file{sustechthesis.cls} 文件一起发布。
% \item 使用前阅读文档:\file{sustechthesis.pdf}。
% \end{itemize}
%
% \subsection{生成模板}
% \label{sec:generate-cls}
% 模板的源文件(\file{sustechthesis.dtx})中包含了大量的注释,需要将注释去掉生成轻量
% 级的 \file{.cls} 文件供 \cs{documentclass} 调用。
%
% \begin{shell}
% $ xetex sustechthesis.ins
% \end{shell}
%
% ^^A\note[注意:]{如果没有生成的模板 \file{sustechthesis.cls} 文件
% ^^A (跟 \file{sustechthesis-example.tex} 同一目录下),
% ^^A \LaTeX{} 在编译时可能找到发行版中较旧版本的 \file{.cls},从而造成冲突。}
%
% \subsection{编译论文}
% \label{sec:generate-thesis}
% 本节介绍几种常见的生成论文的方法。用户可根据自己的情况选择。
%
% 在撰写论文时,我们\textbf{不推荐}使用原有的 \file{sustechthesis-example.tex} 这一名称。
% 建议将其复制一份,改为其他的名字(如 \file{thesis.tex} 或者 \file{main.tex})。
% 需要注意,如果使用了来自 \file{data} 目录中的 \file{tex} 文件,
% 则重命名主文件后,其顶端的 \texttt{!TeX root} 选项也需要相应修改。
%
% \subsubsection{GNU make}
% \label{sec:make}
% 如果用户可以使用 GNU make 工具,这是最方便的办法。
% 所以 \sustechthesis{} 提供了 \file{Makefile}:
% \begin{shell}
% $ make thesis # 生成论文示例 sustechthesis-example.pdf
% $ make doc # 生成说明文档 sustechthesis.pdf
% $ make clean # 清理编译生成的辅助文件
% \end{shell}
% \note[注意:]{Makefile 还提供其他命令,可以自行查看。}
%
% 需要注意,如果更改了主文件的名称,则需要修改 \file{Makefile} 顶端的 \texttt{THESIS} 变量定义。
%
% \subsubsection{latexmk}
% \label{sec:latexmk}
% \texttt{latexmk} 命令支持全自动生成 \LaTeX{} 编写的文档,并且支持使用不同的工具
% 链来进行生成,它会自动运行多次工具直到交叉引用都被解决。建议没有配置 GNU make 工具的 Windows 用户
% 采用该种方式。
% \begin{shell}
% $ latexmk sustechthesis-example.tex # 生成示例论文 sustechthesis-example.pdf
% $ latexmk sustechthesis.dtx # 生成说明文档 sustechthesis.pdf
% $ latexmk -c # 清理编译生成的辅助文件
% \end{shell}
% \texttt{latexmk} 的编译过程是通过 \file{latexmkrc} 文件来配置的,如果要进一步了解,
% 可以参考 \pkg{latexmk} 文档。
%
% \subsubsection{\XeLaTeX}
% \label{sec:xelatex}
% 如果用户无法使用以上两种较为方便的编译方法,就只能按照以下复杂的办法手动编译。
%
% 首先,更新模板:
% \begin{shell}
% $ xetex sustechthesis.ins # 生成 sustechthesis.cls
% \end{shell}
%
% 然后,生成论文:
% \begin{shell}
% $ xelatex sustechthesis-example.tex
% $ bibtex sustechthesis-example.aux # 生成 bbl 文件
% $ xelatex sustechthesis-example.tex # 解决引用
% $ xelatex sustechthesis-example.tex # 生成论文 PDF
% \end{shell}
%
% 下面的命令用来生成用户手册:
% \begin{shell}
% $ xelatex -shell-escape sustechthesis.dtx
% $ makeindex -s gind.ist -o sustechthesis.ind sustechthesis.idx
% $ xelatex -shell-escape sustechthesis.dtx
% $ xelatex -shell-escape sustechthesis.dtx # 生成说明文档 sustechthesis.pdf
% \end{shell}
%
% \subsection{升级}
% \label{sec:upgrade}
% 如果需要升级 \sustechthesis{},应当从 GitHub 下载最新的版本,
% 将 \file{sustechthesis.dtx} 和 \file{sustechthesis.ins} 拷贝至工作目录覆盖相应的文件,然后按照
% 第~\ref{sec:generate-cls} 节的内容生成新的模板和使用说明。
%
% 有时模板可能进行了重要的修改,不兼容已写好的正文内容,用户应按照示例
% 文档重新调整。
%
% \section{使用说明}
% \label{sec:usage}
% 本手册假定用户已经能处理一般的 \LaTeX{} 文档,并对 \hologo{BibTeX} 有一定了解。如果
% 从未接触过 \TeX{} 和 \LaTeX,建议先学习相关的基础知识。
%
% \subsection{示例文件}
% \label{sec:userguide}
%
% 模板核心文件有:\file{sustechthesis.cls},
% 但如果没有示例文档会较难下手,所以推荐从模板自带的示例文档入手。其中包括了论文
% 写作用到的所有命令及其使用方法,只需用自己的内容进行相应替换就可以。对于不清
% 楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示例文档,
% 具体内容可以参考模板附带的 \file{sustechthesis-example.tex}、\file{sustech-setup.tex}
% 和 \file{data/}。
%
% \subsection{论文选项}
% \label{sec:option}
% 绝大部分论文选项的设置位于 \file{sustech-setup.tex} 文件,对应选项附近也有相关注释。
% 其他论文选项设置位于 \file{sustechthesis-example.tex}。
%
% 本节中的 \emph{key-value} 选项只能在文档类 \file{sustechthesis-example.tex} 的选项中进行设置,
% 不能用于 \file{sustech-setup.tex} 中的 \cs{thusetup} 命令。
%
% \subsubsection{学位}
% \DescribeOption{degree}
% 选择学位,可选:
% \option{master}(默认),\option{doctor}。
%
% \begin{latex}
% % 硕士论文
% \documentclass[degree=master]{sustechthesis}
% \end{latex}
%
% \subsubsection{书写语言}
% \DescribeOption{language}
% 定义论文的主要语言,如章节标题等。
% 在正文中设置 \option{language} 只修改接下来部分的书写语言,
% 如标点格式、图表名称,但不影响章节标题等。
% \begin{latex}
% % 英文为主要语言
% \documentclass[language=english]{sustechthesis}
% \end{latex}
%
% 论文的一些部分(如英文摘要)要求使用特定的语言,
% 模板已经进行配置,并在这些部分结束后自动恢复为主要语言。
%
% 注意,\textbf{用户须提前与导师和院系的审查教师确认使用何种语言书写论文}。
% 例如:部分院系允许(或要求)外籍导师的学生采用英文书写论文,然而中国籍导师的学生仅能使用中文。
% 不过不同院系执行严格程度不同,请自行确认。
%
%
% \subsection{字体配置}
% \label{sec:font-config}
% 模板默认可以自动检测操作系统,并配置改平台上合适的字体,
% 具体的配置策略如表~\ref{tab:font}。
% \begin{table}[htb]
% \centering
% \caption{\thuthesis{} 自动配置字体策略}
% \label{tab:font}
% \begin{tabular}{ccc}
% \toprule
% Windows & macOS & 其他 \\
% \midrule
% Times New Roman & Times New Roman & TeX Gyre Termes \\
% Arial & Arial & TeX Gyre Heros \\
% Courier & Courier & TeX Gyre Cursor \\
% 中易宋体 & 华文宋体 & Fandol 宋体 \\
% 中易黑体 & 华文黑体 & Fandol 黑体 \\
% \bottomrule
% \end{tabular}
% \end{table}
%
% 然而自动配置的字体只能保证编译通过,但是还存在一些问题:
% \begin{enumerate}
% \item 在其他平台上配置的 TeX Gyre 系列字体,虽然在风格上比较接近 Times 和 Arial,
% 但是毕竟跟《写作指南》要求的字体不完全一致;
% \item Fandol 字库的字形较少,常常出现缺字的情况;
% \item 华文字库和 Fandol 字库虽然不违反《写作指南》的要求,
% 但是其字形跟中易字库有所差别,这导致封面、标题的视觉效果与学校的 Word 示例不一致,
% 可能被审查老师认为格式不符合要求。
% \end{enumerate}
%
% 所以建议在提交最终版前使用 Windows 平台的字体进行编译。
%
% 用户也可以在调用 \sustechthesis{} 时手动指定使用系统自带的字库,如:
%
% \begin{latex}
% \documentclass[fontset=windows]{sustechthesis}
% \end{latex}
%
% 允许的选项有 \option{windows}、\option{mac}、\option{fandol},详
% 见 \pkg{ctex}、\pkg{xeCJK}、\pkg{fontspec} 等宏包的使用说明。
%
% 如在非 Windows 系统下还想使用其字体,可使用 \option{external} 选项调用包内带的 Windows 字体:
%
% \begin{latex}
% \documentclass[cjk-font=external]{sustechthesis}
% \end{latex}
%
% 允许的选项有 \option{windows}、\option{mac}、\option{fandol}、
% \option{external},等。
%
% \subsection{论文设置}
% 论文的设置可以通过 \file{sustech-setup.tex} 中的统一命令 \cs{thusetup} 设置 \emph{key=value} 形式完成。
%
% \DescribeMacro{\thusetup}
% \cs{thusetup} 用法与常见 \emph{key=value} 命令相同,如下:
% \begin{latex}
% \thusetup{
% key1 = value1,
% key2 = {a value, with comma},
% }
% % 可以多次调用
% \thusetup{
% key3 = value3,
% key1 = value11, % 覆盖 value1
% }
% \end{latex}
%
% \note[注意:]{\cs{thusetup} 使用 \pkg{kvsetkeys} 机制,所以配置项之间不能有空行,否则
% 会报错。此外 \emph{key=value} 后的英文逗号不可删除。}
%
% \subsubsection{输出格式}
% \DescribeOption{output}
% 选择输出的格式是打印版还是电子版(用于提交),可选:\option{print}(默认)、\option{electronic}。
% \sustechthesis{}将\textbf{不会}在插入扫描的 PDF 文件时自动生成页码。因此定稿后确认页码不变,
% 再\textbf{插入已签名的扫描声明页},以防页码出错。
%
% ^^A 一些院系要求提交的电子版不含空白页,但是这对打印并不友好,
% ^^A 比如正文第一页可能会在左侧;以及一些部分需要单面打印,需要插入空白页。
% ^^A 注意在不同选项下,生成的声明页码很可能不同。为了避免页码错误,
% ^^A \thuthesis{}将会在插入扫描的 PDF 文件时自动生成页码,因此\textbf{扫描声明页时请移除底部的页码},以防重叠。
%
% \begin{latex}
% \thusetup{
% output = electronic,
% }
% \end{latex}
%
% ^^A另外本科生要求有 0.2cm 留给装订线的宽度,这只有在打印版中才会生效。
%
%
% \subsection{封面信息}
% \label{sec:titlepage}
% 封面信息可以通过统一设置命令 \cs{thusetup} 设置 \emph{key=value} 形式完成;
% 带 * 号的键通常是对应的英文。
%
% \subsubsection{论文标题}
% 中英文标题。可以在标题内部使用换行|\\|,如不需要使用副标题,需要注释掉该行。
% \begin{latex}
% \thusetup{
% title = {论文中文题目},
% title* = {Thesis English Title},
% subtitle = {论文中文副题目},
% subtitle* = {Thesis English optional Subtitle},
% }
% \end{latex}
%
% \subsubsection{申请学位名称}
% 学位的设置要复杂一些:
%
% \begin{table}[htp]
% \centering
% \begin{tabular}{ll}
% \toprule
% 选项 & 可选值 \\ \midrule
% degree-domain & 理学,工学,医学 \\
% degree-domain* & Science, Engineering, Medicine \\
% degree-type & academic (学术型,如学术硕士或其他), professional (专业型,如工程硕士) \\
% \bottomrule
% \end{tabular}
% \end{table}
%
% \begin{latex}
% \thusetup{
% degree-domain = {学位领域},
% degree-domain* = {Degree domain in English},
% degree-type = academic,
% }
% \end{latex}
%
% \subsubsection{院系名称}
% 院系名称,名称超长时可以使用换行|\\|。
% \begin{latex}
% \thusetup{
% department = {系名全称},
% department* = {Department name in English}
% }
% \end{latex}
%
% \subsubsection{学科名称}
%
% \begin{itemize}
% \item 学术型学位:获得一级学科授权的学科填写一级学科名称,其他填写二级学科名称;
% \item 工程硕士:工程领域名称;
% \item 其他专业型学位:-
% \end{itemize}
%
% \begin{latex}
% \thusetup{
% discipline = {学科名称},
% discipline* = {Discipline in English},
% }
% \end{latex}
%
% \subsubsection{作者姓名}
% 作者姓名。
% \begin{latex}
% \thusetup{
% author = {中文姓名},
% author* = {Name in Pinyin},
% }
% \end{latex}
%
% \subsubsection{导师}
% \myentry{导师}
% \begin{latex}
% \thusetup{
% supervisor = {某某某(Alice Bob)助理教授},
% supervisor* = {Assistant Professor Alice Bob},
% }
% \end{latex}
%
% \subsubsection{发布日期、答辩日期}
% 默认为当前日期,也可以自己指定(\textbf{推荐}),要求使用 ISO 格式,即是 YYYY-MM-DD 的形式。
% \begin{latex}
% \thusetup{
% date = {2010-12-20},
% defense-date = {2020-12-20},
% }
% \end{latex}
%
% \subsubsection{密级}
% \label{sec:setup-secret}
% 定义秘密级别。可选:公开,秘密,机密,绝密。
% \begin{latex}
% \thusetup{
% statesecrets = {公开},
% }
% \end{latex}
%
% \subsubsection{图书分类号}
% 定义国内图书分类号,国际图书分类号。
% \begin{latex}
% \thusetup{
% natclassifiedindex={TM301.2},
% intclassifiedindex={62-5},
% }
% \end{latex}
%
% \myentry{生成封面}
% \DescribeMacro{\maketitle}
% 生成封面,不含授权说明,摘要等。
% \begin{latex}
% % 直接生成封面
% \maketitle
% \end{latex}
%
% \subsection{前言部分}
%
% \subsubsection{公开评阅人和答辩委员会名单}
% \myentry{答辩委员会名单}
% \DescribeEnv{committee}
% 学位论文公开评阅人和答辩委员会名单可以由 \env{committee} 环境生成,
% 其中的可选参数可以使用 \option{name} 根据是有无指导小组设置合适的标题,比如
% \begin{latex}
% \begin{committee}[name={学位论文公开评阅人和答辩委员会名单}]
% ...
% \end{committee}
% \end{latex}
%
% 答辩委员会名单中的表格使用 LaTeX 生成可能略麻烦,也可以导入 Word 版转成的 PDF 文件,
% \begin{latex}
% \begin{committee}[file=figures/scan-committee.pdf]
% \end{committee}
% \end{latex}
%
%
% \subsubsection{摘要}
% \myentry{摘要正文}
% \DescribeEnv{abstract}
% \DescribeEnv{abstract*}
%
% 摘要直接在正文中使用 \env{abstract}、\env{abstract*} 环境生成。
%
% \begin{latex}
% \begin{abstract}
% 摘要请写在这里...
% \end{abstract}
%
% \begin{abstract*}
% Here comes the abstract in English...
% \end{abstract*}
% \end{latex}
%
% \myentry{关键词}
% 关键词需要使用 \cs{thusetup} 进行设置。关键词之间以\emph{西文逗号}隔开,模板会
% 自动调整为要求的格式。关键词的设置只要在摘要环境结束前即可。
% \begin{latex}
% \thusetup{
% keywords = {关键词 1, 关键词 2},
% keywords* = {keyword 1, keyword 2},
% }
% \end{latex}
%
% \subsubsection{目录和索引表}
% 目录、插图、表格、公式和算法等索引命令分别如下,将其插入到期望的位置即可(带*的命令表
% 示对应的索引表不会出现在目录中):
%
% \DescribeMacro{\tableofcontents}
% \DescribeMacro{\listoffigures}
% \DescribeMacro{\listoffigures*}
% \DescribeMacro{\listoftables}
% \DescribeMacro{\listoftables*}
% \DescribeMacro{\listofequations}
% \DescribeMacro{\listofequations*}
% \DescribeMacro{\listofalgorithms}
% \DescribeMacro{\listofalgorithms*}
% \begin{longtable}{ll}
% \toprule
% {\heiti 用途} & {\heiti 命令} \\\midrule
% 目录 & \cs{tableofcontents} \\\midrule
% 插图索引 & \cs{listoffigures} \\
% & \cs{listoffigures*} \\\midrule
% 表格索引 & \cs{listoftables} \\
% & \cs{listoftables*} \\\midrule
% 公式索引 & \cs{listofequations} \\
% & \cs{listofequations*}\\\midrule
% 算法索引 & \cs{listofalgorithms} \\
% & \cs{listofalgorithms*}\\\bottomrule
% \end{longtable}
%
% \LaTeX{} 默认支持插图和表格索引,是通过 \cs{caption} 命令完成的,因此它们必须出
% 现在浮动环境中,否则不被计数。
%
% 如果不想让某个表格或者图片出现在索引里面,那么请使用命令 \cs{caption*},这
% 个命令不会给表格编号,也就是出来的只有标题文字而没有“表~xx”,“图~xx”,否则
% 索引里面序号不连续就显得不伦不类,这也是 \LaTeX{} 里星号命令默认的规则。
%
% 如果的确想让其编号,但又不想出现在索引中的话,目前模板暂不支持。
%
% 公式索引为本模板扩展,模板扩展了 \pkg{amsmath} 几个内部命令,使得公式编号样式和
% 自动索引功能非常方便。一般来说,你用到的所有数学环境编号都没问题了,这个可以参
% 看示例文档。如果你有个非常特殊的数学环境需要加入公式索引,那么请使
% 用 \cs{equcaption}\marg{编号}。此命令表示 equation caption,带一个参数,即显示
% 在索引中的编号。因为公式与图表不同,我们很少给一个公式附加一个标题,之所以起这
% 么个名字是因为图表就是通过 \cs{caption} 加入索引的,\cs{equcaption} 完全就是为
% 了生成公式列表,不产生什么标题。
%
% 使用方法如下。假如有一个非 equation 数学环境 \texttt{mymath},只要在其中写一
% 句 \cs{equcaption} 就可以将它加入公式列表。
% \begin{latex}
% \begin{mymath}
% \label{eq:emc2}\equcaption{\ref{eq:emc2}}
% E=mc^2
% \end{mymath}
% \end{latex}
%
% \texttt{mymath} 中公式的编号需要自己来做。
%
% 同图表一样,附录中的公式有时也不希望它跟全文统一编号,而且不希望它出现在公式
% 索引中。目前的办法是利用 \cs{tag*}\marg{公式编号} 来解决。用法比较简单,此
% 处不再罗嗦,实例请参看示例文档附录 A 的前两个公式。
%
% \subsubsection{符号对照表}
% \DescribeEnv{denotation}
% 主要符号表环境,跟 \env{description} 类似,使用方法参见示例文件。带一个可选参数,
% 用来指定符号列的宽度(默认为 2.5cm)。
% \begin{latex}
% \begin{denotation}
% \item[E] 能量
% \item[m] 质量
% \item[c] 光速
% \end{denotation}
% \end{latex}
%
% 如果默认符号列的宽度不满意,可以通过参数来调整:
% \begin{latex}
% \begin{denotation}[1.5cm] % 设置为 1.5cm
% \item[E] 能量
% \item[m] 质量
% \item[c] 光速
% \end{denotation}
% \end{latex}
%
% 符号对照表的另外一种方法是调用 \pkg{nomencl} 宏包,需要在导言区设置:
%
% \begin{latex}
% \usepackage{nomencl}
% \makenomenclature
% \end{latex}
%
% 然后在正文中任意位置使用 \cs{nomenclature} 声明需要添加到主要符号表的符号:
%
% \begin{latex}
% \nomenclature{$m$}{The mass of one angel}
% \end{latex}
%
% 最后使用 \cs{printnomenclature} 命令生成符号表。更详细的使用方法参
% 见 \pkg{nomencl} 宏包的文档。
%
% \subsection{正文部分}
%
% \subsubsection{数学符号}
% \label{sec:math}
% 数学符号应遵循 GB/T 3102.11—1993《物理科学和技术中使用的数学符号》
% 模板中使用 \pkg{unicode-math} 宏包来配置数学符号,
% 与 \LaTeX{} 默认的英美国家的符号习惯有所差异:
% \newcommand\dif{\mathop{}\!\mathrm{d}}
% \begin{enumerate}
% \item 大写希腊字母默认为斜体,如 \cs{Delta}:$\Delta$。
% \item 有限增量符号 $\increment$(U2206)应使用 \pkg{unicode-math} 宏包提供的
% \cs{increment} 命令。
% \item 向量、矩阵和张量要求粗斜体,应使用 \cs{symbf} 命令,
% 如 \verb|\symbf{A}|、\verb|\symbf{\alpha}|。
% \item 数学常数和特殊函数要求用正体,应使用 \cs{symup} 命令,
% 如 $\symup{\pi} = 3.14\dots$; $\symup{e} = 2.718\dots$,
% \item 微分号和积分号使用使用正体,比如 $\int f(x) \dif x$。
% \end{enumerate}
%
% \DescribeOption{math-style}
% 用户可以通过设置 \option{math-style} 选择数学符号样式(可选:
% \option{GB}(中文默认),\option{TeX}(英文默认)),比如:
% \begin{latex}
% \thusetup{
% math-style = GB,
% }
% \end{latex}
%
% 关于数学符号更多的用法,参考
% \href{http://mirrors.ctan.org/macros/latex/contrib/unicode-math/unicode-math.pdf}{\pkg{unicode-math}}
% 宏包的使用说明,
% 全部数学符号命的令参考
% \href{http://mirrors.ctan.org/macros/latex/contrib/unicode-math/unimath-symbols.pdf}{\pkg{unimath-symbols}}。
%
% 注意,\pkg{unicode-math} 宏包与 \pkg{amsfonts}、\pkg{amssymb}、\pkg{bm}、
% \pkg{mathrsfs}、\pkg{upgreek} 等宏包\emph{不}兼容。
% 模板作了处理,用户可以直接使用这些宏包的命令,如 \cs{bm}、\cs{mathscr}、
% \cs{uppi}。
%
% \subsubsection{定理环境}
% \label{sec:theorem}
% \sustechthesis{} 定义了常用的数学环境:
%
% \begin{center}
% \begin{tabular}{*{7}{l}}\toprule
% axiom & theorem & definition & proposition & lemma & conjecture &\\
% 公理 & 定理 & 定义 & 命题 & 引理 & 猜想 &\\\midrule
% proof & corollary & example & exercise & assumption & remark & problem \\
% 证明 & 推论 & 例子& 练习 & 假设 & 注释 & 问题\\\bottomrule
% \end{tabular}
% \end{center}
%
% 比如:
% \begin{latex}
% \begin{definition}
% 道千乘之国,敬事而信,节用而爱人,使民以时。
% \end{definition}
% \end{latex}
% 产生(自动编号):
% \medskip
%
% \noindent\framebox[\linewidth][l]{{\heiti 定义~1.1~~~} % {道千乘之国,敬事而信,节用而爱人,使民以时。}}
%
% \smallskip
% 列举出来的数学环境毕竟是有限的,如果想用\emph{胡说}这样的数学环境,那么可以定义:
% \begin{latex}
% \newtheorem{nonsense}{胡说}[chapter]
% \end{latex}
%
% 然后这样使用:
% \begin{latex}
% \begin{nonsense}
% 契丹武士要来中原夺武林秘笈。—— 慕容博
% \end{nonsense}
% \end{latex}
%
% 产生(自动编号):
%
% \medskip
% \noindent\framebox[\linewidth][l]{{\heiti 胡说~1.1~~~} % {契丹武士要来中原夺武林秘笈。—— 慕容博}}
%
% \subsubsection{列表环境}
% \DescribeEnv{itemize}
% \DescribeEnv{enumerate}
% \DescribeEnv{description}
% 为了适合中文习惯,模板将这三个常用的列表环境用 \pkg{enumitem} 进行了纵向间距压
% 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号,
% 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。
%
% \subsubsection{引用方式}
% \label{sec:citestyle}
% 模板支持两种引用方式,分别为理工科常用的“顺序编码制”和文科常用
% 的“著者-出版年制”,对于\textbf{南方科技大学的毕业生使用“顺序编码制”即可}。
% 使用者在设置参考文献表的格式
% (\cs{bibliographystyle},见第~\ref{sec:bibliography} 节)时,
% 正文中引用文献的标注会自动调整为对应的格式。
%
% 如果需要标出引文的页码,可以写在 \cs{cite} 的可选参数中,如
% |\cite[42]{knuth84}|。
%
% \paragraph{顺序编码制}
% \DescribeMacro{\inlinecite}
% 顺序编码制的参考文献引用分为两种模式:
% \begin{enumerate}
% \item 上标模式(super),比如“同样的工作有很多\textsuperscript{[1-2]}……”;
% \item 正文模式(inline),比如“文 [3] 中详细说明了……”。
% \end{enumerate}
%
% \paragraph{著者-出版年制}
% 著者-出版年制的参考文献引用有两种模式:
% \begin{enumerate}
% \item \cs{citep}:著者与年份均在括号中,比如“(Zhang, 2008)”,
% 同默认的 \cs{cite} 命令;
% \item \cs{citet}:著者姓名作为正文的一部分,比如“Zhang (2008)”;
% \end{enumerate}
%
% 另外,\pkg{natbib} 还提供了其他方便引用的命令,
% 比如 \cs{citeauthor}、\cs{citeyear} 等,
% 更多细节参考 \pkg{natbib} 的文档。
%
% \subsection{其他部分}
%
% \subsubsection{参考文献}
% \label{sec:bibliography}
%
% 参考文献使用 \hologo{BibTeX} 生成。
% \hologo{BibTeX} 是 LaTeX 处理参考文献的传统的方式,
% 需要在使用 \cs{bibliographystyle}\marg{style} 选择样式
% 并用 \cs{bibliography} 设置 \file{.bib} 的路径。
% 然后使用 \texttt{bibtex} 对 \file{.aux} 文件进行编译得到 \file{.bbl} 文件。
% 其中的参考文献表内容会在后续编译时替换到 \cs{bibliography} 的位置。
%
% \subsubsection{致谢}
%
% \DescribeEnv{acknowledgements}
% 把致谢做成一个环境更好一些,直接往里面写感谢的话就可以啦。
%
% \begin{latex}
% \begin{acknowledgements}
% …
% 还要特别感谢 \sustechthesis{} 节省了论文排版时间!
% \end{acknowledgements}
% \end{latex}
%
% \subsubsection{原创性声明与授权说明}
% \myentry{原创性声明与授权说明}
% \DescribeMacro{\statementcopyright}
% 可选参数为扫描得到的 PDF 文件名,例如:
% \begin{latex}
% 生成未签名的声明
% \statementcopyright
% % 将签字扫描后授权文件 scan-statement.pdf 替换原始页面
% \statementcopyright[scan-statement.pdf]
% \end{latex}
%
% \subsubsection{附录}
%
% 附录由 \cs{appendix} 命令开启,然后像正文一样书写。
% \begin{latex}
% \appendix
% \chapter{...}
% ...
% \end{latex}
%
% \DescribeOption{toc-depth}
% 一些院系要求目录中只出现附录的章标题,不出现附录中的一级、二级节标题。模板默认
% 如此设置,用户也可以在 \cs{appendix} 命令后手动控制加入目录的标题层级,其
% 中 |0| 表示章标题,|1| 表示一级节标题,以此类推。
%
% \begin{latex}
% \appendix
% \thusetup{toc-depth=0} % 目录只出现章标题
% \end{latex}
%
%
% \subsubsection{个人简历、在学期间完成的相关学术成果}
% \DescribeEnv{resume}
% 研究生的标题为为“个人简历、在学期间完成的相关学术成果”,
%
% \DescribeEnv{achievements}
% 本章的其他标题同样使用 \cs{section*},\cs{subsection*} 等命令生成,
% “学术论文”和“申请及已获得的专利”使用 \env{localref} 环境生成,环境内使用 \cs{nocite}\marg{citekey} 引用参考文献
% (与 \cs{cite}\marg{citekey}使用方式一致)。
% 《指南》要求引用编号连续,故自行计算起始编号作为 \env{localref} 环境参数。
% “参与的科研项目及获奖情况”使用 \env{achievements} 环境生成,使用方式同 \env{enumerate} 环境,
% 同样需要指定起始编号以满足《指南》要求。
%
% \begin{latex}
% \begin{resume}
% \section*{个人简历}
% ……
%
% \section*{在学期间完成的相关学术成果}
%
% \subsection*{学术论文}
% \begin{localref}{ref/refs}[number]
% \nocite{....}
% \nocite{....}
% \end{localref}
%
% \subsection*{申请及已获得的专利(无获奖时此项不必列出)}
% \begin{localref}{ref/refs}[number]
% \nocite{....}
% \nocite{....}
% \end{localref}
%
% \subsection*{参与的科研项目及获奖情况(无获奖时此项不必列出)}
% \begin{achievements}[start=number]
% \item ……
% \item ……
% \end{achievements}
% \end{resume}
% \end{latex}
%
%
% \section{致谢}
% \label{sec:thanks}
% 感谢这些年来一直陪伴 \sustechthesis{} 成长的新老同学!
%
% 欢迎各位到 \href{https://github.com/SUSTech-CRA/sustech-master-thesis}{\sustechthesis{} GitHub 主页}贡献!
%
%
% ^^A redefine some commands in markdown package to remove annoying section numbering
% \renewcommand{\markdownRendererHeadingTwo}[1]{\subsection*{#1}}
% \renewcommand{\markdownRendererHeadingThree}[1]{\subsubsection*{#1}}
% ^^A render changelog from markdown
% \markdownInput{CHANGELOG.md}
%
%
% \StopEventually{\PrintIndex}
% \clearpage
%
% \section{实现细节}
%
% \subsection{基本信息}
% \begin{macrocode}
%<cls>\NeedsTeXFormat{LaTeX2e}[2017/04/15]
%<cls>\ProvidesClass{sustechthesis}
%<cls>[2024/04/29 1.3.21 Southern University of Science and Technology Thesis Template]
% \end{macrocode}
%
% 报错
% \begin{macrocode}
\newcommand\thu@error[1]{%
\ClassError{sustechthesis}{#1}{}%
}
\newcommand\thu@warning[1]{%
\ClassWarning{sustechthesis}{#1}%
}
\newcommand\thu@patch@error[1]{%
\thu@error{Failed to patch command \protect#1}%
}
\newcommand\thu@deprecate[2]{%
\def\thu@@tmp{#2}%
\thu@warning{%
The #1 is deprecated%
\ifx\thu@@tmp\@empty\else
. Use #2 instead%
\fi
}%
}
% \end{macrocode}
%
% 检查 \LaTeXe{} kernel 版本
% 使用了 bibtex-gbt7714 2.0 版本的接口,故要求至少 TeX Live 2020
% \begin{macrocode}
\@ifl@t@r\fmtversion{2020/01/01}{}{
\thu@error{%
TeX Live 2020 or later version is required to compile this document%
}
}
% \end{macrocode}
%
% 检查编译引擎,要求使用 \XeLaTeX。
% \begin{macrocode}
\RequirePackage{iftex}
\ifXeTeX\else
\thu@error{XeLaTeX is required to compile this document}
\fi
% \end{macrocode}
%
% \subsection{定义选项}
% \label{sec:defoption}
% 定义论文类型以及是否涉密
% \begin{macrocode}
%<*cls>
\hyphenation{Thu-Thesis SUSTech-Thesis}
\def\thuthesis{ThuThesis}
\def\sustechthesis{SUSTechThesis}
\def\version{1.3.21}
\RequirePackage{kvdefinekeys}
\RequirePackage{kvsetkeys}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
family=thu,
prefix=thu@,
setkeys=\kvsetkeys}
% \end{macrocode}
%
% \begin{macro}{\thusetup}
% 提供一个 \cs{thusetup} 命令支持 \emph{key-value} 的方式来设置。
% \begin{macrocode}
\newcommand\thusetup[1]{%
\kvsetkeys{thu}{#1}%
}
% \end{macrocode}
% \end{macro}
%
% 同时用 \emph{key-value} 的方式来定义这些接口:
% \begin{latex}
% \thu@define@key{
% <key> = {
% name = <name>,
% choices = {
% <choice1>,
% <choice2>,
% },
% default = <default>,
% },
% }
% \end{latex}
%
% 其中 |choices| 设置允许使用的值,默认为第一个(或者 \meta{default});
% \meta{code} 是相应的内容被设置时执行的代码。
%
% \begin{macrocode}
\newcommand\thu@define@key[1]{%
\kvsetkeys{thu@key}{#1}%
}
\kv@set@family@handler{thu@key}{%